Đến nội dung


Hình ảnh
- - - - -

[Nhờ viết Lsp] nhờ các cao thủ viết hộ cái lsp mir-tag ghi chú thép trong ASD


  • Please log in to reply
37 replies to this topic

#21 hantinh

hantinh

    biết lệnh attdef

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

Đã gửi 05 December 2011 - 11:35 AM

sau khi đọc bài của ae giúp đỡ mình đã sửa lại nó như sau

(defun C:ccb (/ ename ename1 ename2 ename3 ename4 ename5
x1 x2 x3 x4 y1 y2 y3 y4 p1 p2 p3 p4)
(setq
ename (ssget "\n Chon doi tuong :")
ename1 (car ename)
ename2 (entget ename1)
ename3 (cdr (assoc 340 ename2))
ename4 (entget ename3)
)
(setq ss (ssget
'((-4 . "<or")
(0 . "RBCRENBARSHAPEDESC")
(0 . "RBCR_ENDE_BARDDESC")
(-4 . "or>")
)
)
)
(setq
p3 (nth 50 ename3)
p2 (nth 47 ename3)
p1 (nth 44 ename3)
x1 (cadr
(nth 44 ename3)
)
x2 (cadr
(nth 47 ename3)
)
x3 (cadr
(nth 50 ename3)
)
)
(if (> x3 x2)
(setq x4 (- x2 kcach))
(setq x4 (+ x2 kcach))
)
(setq
ename5 (subst p4 p3 ename4)
ename1 (append enam1 neame5)
);;;
(entmod ename1)
)
(Command: "_.mirror" ss "")
(princ)
)
đến đoạn

(if (> x3 x2)
(setq x4 (- x2 kcach))
(setq x4 (+ x2 kcach))
)

thì nó báo lỗi. mình xem lại thì cái biến "kcach" chưa được khi báo.
cái này là dư liệu mình càn đánh dấu( chọn)

((-4 . "<or")
(0 . "RBCRENBARSHAPEDESC")
(0 . "RBCR_ENDE_BARDDESC")
(-4 . "or>")
)

mình khai báo thế nầy hok hiểu đã đúng chưa
  • 0

#22 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5449 Bài viết
Điểm đánh giá: 2625 (tuyệt vời)

Đã gửi 05 December 2011 - 11:49 AM

sau khi đọc bài của ae giúp đỡ mình đã sửa lại nó như sau
...
đến đoạn
...
thì nó báo lỗi. mình xem lại thì cái biến "kcach" chưa được khi báo.
...
cái này là dư liệu mình càn đánh dấu( chọn)
...
mình khai báo thế nầy hok hiểu đã đúng chưa


Nói tóm lại: bạn đặt y/c bằng lời văn rồi mọi người giúp bạn sửa lisp. Từ đó bạn dễ rút ra kinh nghiệm hơn. Thực ra là tôi chưa biết lisp của bạn mục đích cuối cùng để làm gì, nên sửa từng đoạn thì khó lắm.
Thân thương!
  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#23 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 05 December 2011 - 11:52 AM

sau khi đọc bài của ae giúp đỡ mình đã sửa lại nó như sau


(defun C:ccb (/ ename ename1 ename2 ename3 ename4 ename5
x1 x2 x3 x4 y1 y2 y3 y4 p1 p2 p3 p4)
(setq
ename (ssget "\n Chon doi tuong :")
ename1 (car ename)
ename2 (entget ename1)
ename3 (cdr (assoc 340 ename2))
ename4 (entget ename3)
)
(ssget
'((-4 . "<or")
(0 . "RBCRENBARSHAPEDESC")
(0 . "RBCR_ENDE_BARDDESC")
(-4 . "or>")
)
)
(setq
p3 (nth 50 ename3)
p2 (nth 47 ename3)
p1 (nth 44 ename3)
x1 (cadr
(nth 44 ename3)
)

x2 (cadr
(nth 47 ename3)
)
x3 (cadr
(nth 50 ename3)
)
(if (> x3 x2)
(setq x4 (- x2 10))
(setq x4 (+ x2 10))
)
(setq
ename5 (subst p4 p3 ename4)
ename1 (append enam1 neame5)
);;;
(entmod ename1)
)
(Command: "_.mirror" ss "")
(princ)
)
đến đoạn

(if (> x3 x2)
(setq x4 (- x2 kcach))
(setq x4 (+ x2 kcach))
)

thì nó báo lỗi. mình xem lại thì cái biến "kcach" chưa được khi báo.
cái này là dư liệu mình càn đánh dấu( chọn)

((-4 . "<or")
(0 . "RBCRENBARSHAPEDESC")
(0 . "RBCR_ENDE_BARDDESC")
(-4 . "or>")
)

mình khai báo thế nầy hok hiểu đã đúng chưa

Ch­ưa đúng.
(setq ename (ssget "\n Chon doi tuong :")
.......
Bạn xem lại cú pháp của hàm ssget nhé. Viết vầy là chưa đúng rồi
cái nữa là biến ss chưa được set
nên dòng này có thể lỗi đấy
(Command: "_.mirror" ss "")
  • 0

#24 hantinh

hantinh

    biết lệnh attdef

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

Đã gửi 05 December 2011 - 12:30 PM

cái này là hình ảnh ban đầu chưa dùng lsp mà minh viết
Hình đã gửi
cái này là sau khi dùng cái lsp trên
Hình đã gửi
  • 0

#25 hantinh

hantinh

    biết lệnh attdef

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

Đã gửi 05 December 2011 - 12:31 PM

@ketxu: tks bạn nhé. tại bỏ tới 6 năm rồi hem viết lách cái ji cả nên h quên hết mất rồi. h đang phải học lại. Hik
Nếu hok dùng hàm ssget ở đầu thì có thể dùng hàm thay thế là hàm prompt có được không vậy?
  • 0

#26 thichhoabinh

thichhoabinh

    biết vẽ circle

  • Members
  • PipPip
  • 32 Bài viết
Điểm đánh giá: 6 (bình thường)

Đã gửi 05 December 2011 - 01:10 PM

@ketxu: đã có lời cảm ơn ae giúp đỡ rồi mà sao bạn lại :angry2: ????????????????????????

- Bài này bên http://arttool.vn bác tinhkhuc có nói rõ @ r mà, bạn post sang đây k thấy add link ^^
- Bạn viết lisp dù 1 ngày hay 6 năm, thì cơ bản nhất vẫn là vấn đề về cặp (), mình thấy k đoạn nào là bạn không lỗi chỗ đó ?
- Hàm ssget bản thân trả về 1 selection set, là 1 tập chọn các đối tượng chứ không phải là 1 đối tượng rời rạc. Lisp trên bạn viết là đã hiểu sai hoàn toàn vấn đề khi mà sử dụng 1 đống hàm gán ename, entget(các hàm xử lý 1 đối tượng)... nhưng cuối cùng lại thao tác 1 lệnh mirror với tập ss. 2 đoạn này k liên quan gì đến nhau cả. THông thường từ tập chọn người viết sẽ chuyển thành list các ename, từ list này lại thao tác riêng lẻ
- Hàm ssget không đi cùng prompt giống như các hàm entsel, getinit,getstring.... , bạn phải đẩy prompt lên trước
- Bạn dùng lệnh nth 40, 44, 47, 50, về mặt cụ thể thì đúng, n về logic thì không ai dùng thế cả , vì list entget data của 1 đối tượng không phải lúc nào cũng ngần ấy phần tử, không phải phần tử thứ 40,44,47,50 lúc nào cũng là cái bạn cần lấy
  • 0

#27 hantinh

hantinh

    biết lệnh attdef

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

Đã gửi 05 December 2011 - 02:24 PM

mình viết lại như thế này cho nó dễ xem. các bạn cho ý kiến nhé để mình hoàn thiện lsp. rồi sau đó có thể thay đổi cái hàm chọn để chọn được nhiều đối tượng.
 
(Defun C:ccb (/ ename ename1 ename2 ename3 ename4 ename5
x1 x2 x3 x4 p1 p2 p3 p4 y1 y2 y3 y4)
(setq ename (entsel "Chon doi tuong:")
ename1 (car ename)
ename2 (entget ename1)
ename3 (cdr (assoc 340 ename2))
ename4 (entget ename3)
)
(ssget
'((-4 . "<or")
(0 . "RBCRENBARSHAPEDESC")
(0 . "RBCR_ENDE_BARDDESC")
(-4 . "or>")
)
)
(setq p3 (nth 50 ename3))
(setq p2 (nth 47 ename3))
(setq p1 (nth 44 ename3))
(setq x1 (cadr (nth 44 ename3)))
(setq x2 (cadr (nth 47 ename3)))
(setq x3 (cadr (nth 50 ename3)))
(if (> x3 x2)
(setq x4 (- x2 kcach))
(setq x4 (+ x2 kcach))
)
;khai bao bien kcach or gan bien kcach bang cai (x2+x3)/2
(setq ename5 (subst p4 p3 ename4))
(setq ename1 (append ename1 ename5));end setq
(entmod ename1)
(command: "_.mirror" ss "")
; phai khai bao bien ss de co the mir, c&#243; the khai bao no bang ename1 sau khi da dung ham entmod
(princ)
);end program

  • 0

#28 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5682 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 05 December 2011 - 05:30 PM

Bạn hantinh có đọc bài thichhoabinh viết bên trên k :)
Đáng lý bạn post file bản vẽ + yêu cầu thì có lẽ đã xong rồi ^^
Ss không thấy ở đâu thì bạn mirror làm sao đây ??
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#29 hantinh

hantinh

    biết lệnh attdef

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

Đã gửi 21 February 2012 - 10:30 PM

hok có bro nào dung món ASD này thiết kế kết cấu ah???
bro nào ra tay giúp ACE cái này đi. ngâm cứu mãi vẫn hok thành công toàn mắc.
http://www.4shared.c...a/Drawing2.html
  • 0

#30 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 22 February 2012 - 09:11 AM

hok có bro nào dung món ASD này thiết kế kết cấu ah???
bro nào ra tay giúp ACE cái này đi. ngâm cứu mãi vẫn hok thành công toàn mắc.
http://www.4shared.c...a/Drawing2.html

Nghe nói ASD "tuyệt lắm" -> Làm rất nhanh mà vẫn cần hỗ trợ của LSP à? :D
Cái mà Tue_NV không thích ở ASD là cái hiệu chỉnh và setting của nó.
Muốn làm theo ý mình 1 công đoạn gì đó thì khó hoặc là không được như yêu cầu của bạn ở trên.
Chính vì thế mà mình thường dùng Lisp để tạo ra những ứng dụng hiệu quả, thích hiệu chỉnh cái chi thì hiệu chỉnh, thích thay đổi chi thì thay đổi. Nhưng phải công nhận là ý tưởng Vẽ dầm triển khai của ASD là quá tuyệt, còn cái file bạn vẽ thép sàn kia thì ..... quá xấu :lol:

Đã xem qua file của bạn bằng ASD2012. Đối tượng là đối tượng mới "RBCR_ENDE_SURFACEDESC" -> có thể nó tạo từ ARX nên chắc chỉ có thể dùng ARX hiệu chỉnh nó còn với Lisp thì "bó tay".
Tue_NV đã quan sát dữ liệu ename của đối tượng đó bằng Lisp trước và sau khi thay đổi properties của nó => thấy chẳng có gì cả.
Họa hoằn chăng, viết Lisp chăng nữa thì chỉ có thể dùng Command tác động vào nó mà thôi.
  • 0

#31 hantinh

hantinh

    biết lệnh attdef

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

Đã gửi 22 February 2012 - 11:35 AM

ASD này vẫn có thể dùng được lsp mà. Đối tượng củ có vẫn là đôi tượng xref và có thể hiệu chỉnh được. các đối tượng đều do thang cad quản lý mà, nó dùng mã xref để quản lý. còn thằng ARX chỉ tạo ra đối tượng theo yêu cầu của người dùng. Còn lsp dùng để hiệu chỉnh các điểm chèn đối tượng thôi mà.
Còn thằng ASD nó làm việc theo nguyên tắc chiều kim đồng hồ mà bác. nó hok giống vn là chạy lung tung. đầu nay 1 kiểu đầu kia 1 kiểu để dảm bảo tính thông xuốt và thống nhất. Nó làm vậy để bác chỉ phải đi 1 chiều chứ hok thể đi 2 chiều,
  • 0

#32 Detailing

Detailing

    biết lệnh imageclip

  • Members
  • PipPipPipPipPipPipPip
  • 667 Bài viết
Điểm đánh giá: 278 (khá)

Đã gửi 22 February 2012 - 01:13 PM

Nghe nói ASD "tuyệt lắm" -> Làm rất nhanh mà vẫn cần hỗ trợ của LSP à? :D

ASD chỉ là AutoCAD + một số lệnh + object viết bằng ARX (program AutoCAD Based) nên cũng chẳng có gì là to tát, cái "tuyệt lắm" của nó chính là khả năng trao đổi dữ liệu giữa nó và các chương trình thuộc họ revit tuy nhiên nó lại chưa thực sự hoàn thiện (ở 2011 chưa xem qua 2012)
Điều đáng nói là việc bây giờ lại thảo luận dùng Dynamic Block trong ASD??? Cuối cùng chỉ dùng ASD để thống kê thép ??:D

@hantinh
Cái lisp của bạn cần thực ra trước đây theo hướng dẫn đó mình đã viết rồi, tuy nhiên nó có vài cái dở là: nếu cái tag đó nó ko nằm vuông góc như vậy, hoặc nó có nhiều phân đoạn hơn thì nó chạy tầm bậy lền => BỎ.
Nếu thực sự cần thì bạn sang bên Artool mà xin, nếu các thành viên đó muốn share thì đã gửi rồi còn ko thì tự hiểu, chứ có cái lisp bé tí thế mà bạn cứ đi vòng vòng kiếm hoài cũng mệt nhỉ?
Cái nữa là ko phải ai cũng cài ASD để viết lisp cho bạn.
Good luck!
  • 0

Ideas don't matter, execution does!

1908412_308002392716743_8165279281236341


#33 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 22 February 2012 - 03:03 PM

ASD này vẫn có thể dùng được lsp mà. Đối tượng củ có vẫn là đôi tượng xref và có thể hiệu chỉnh được. các đối tượng đều do thang cad quản lý mà, nó dùng mã xref để quản lý. còn thằng ARX chỉ tạo ra đối tượng theo yêu cầu của người dùng. Còn lsp dùng để hiệu chỉnh các điểm chèn đối tượng thôi mà.
Còn thằng ASD nó làm việc theo nguyên tắc chiều kim đồng hồ mà bác. nó hok giống vn là chạy lung tung. đầu nay 1 kiểu đầu kia 1 kiểu để dảm bảo tính thông xuốt và thống nhất. Nó làm vậy để bác chỉ phải đi 1 chiều chứ hok thể đi 2 chiều,

Sáng nay mình dùng ASD2012 để xem bản vẽ của bạn.
Khi lấy dữ liệu của 1 ename "Block ghi chú thép sàn" thì nó ra vậy :

((-1 . <Entity name: 7ef07858>) (0 . "RBCR_ENDE_SURFACEDESC")
(330 . <Entity name: 7ef05cf8>) (5 . "ED3") (100 . "AcDbEntity") (67 . 0) (410
. "Model") (8 . "AutoCAD_Structural_Detailing_Distribution description") (100 .
"RbcrEntity") (90 . 1) (340 . <Entity name: 7ef07860>) (100 . "REPREZENTATION")
(90 . 1) (1 . "RBCR_DEFAULT") (100 . "REPREZENTATION") (90 . 1) (1 .
"RBCR_DEFAULT") (100 . "REPREZENTATION") (90 . 1) (1 . "RBCR_DEFAULT") (100 .
"RbcrObjectClientEntity") (90 . 1) (100 . "RbcrEnDescription") (90 . 1) (100 .
"RbcrEnBarDescBase") (90 . 1) (100 . "RbcrEnSurfaceDesc") (90 . 1))

Sau khi hiệu chỉnh điểm Grid của "Block ghi chú thép sàn" và lấy dữ liệu của ename đó thì nó ra vậy:

((-1 . <Entity name: 7ef07858>) (0 . "RBCR_ENDE_SURFACEDESC")
(330 . <Entity name: 7ef05cf8>) (5 . "ED3") (100 . "AcDbEntity") (67 . 0) (410
. "Model") (8 . "AutoCAD_Structural_Detailing_Distribution description") (100 .
"RbcrEntity") (90 . 1) (340 . <Entity name: 7ef07860>) (100 . "REPREZENTATION")
(90 . 1) (1 . "RBCR_DEFAULT") (100 . "REPREZENTATION") (90 . 1) (1 .
"RBCR_DEFAULT") (100 . "REPREZENTATION") (90 . 1) (1 . "RBCR_DEFAULT") (100 .
"RbcrObjectClientEntity") (90 . 1) (100 . "RbcrEnDescription") (90 . 1) (100 .
"RbcrEnBarDescBase") (90 . 1) (100 . "RbcrEnSurfaceDesc") (90 . 1))

Trước khi hiệu chỉnh và sau khi hiệu chỉnh nó như nhau, mình không biết tính sao??????

@Detailing : Bạn có thể cho tham khảo cái Lisp của bạn như lời bạn viết không?
Cái lisp của bạn cần thực ra trước đây theo hướng dẫn đó mình đã viết rồi, tuy nhiên nó có vài cái dở là: nếu cái tag đó nó ko nằm vuông góc như vậy, hoặc nó có nhiều phân đoạn hơn thì nó chạy tầm bậy lền => BỎ

Sáng nay, mình định ngồi viết thử cái Lisp này giúp cho bạn hantinh, nhưng không được. Tức thật :lol:
  • 1

#34 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5682 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 22 February 2012 - 03:51 PM

@Bác Tuệ : bác đã check data của các cdr assoc 330, 340 chưa ạ ^^
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#35 Detailing

Detailing

    biết lệnh imageclip

  • Members
  • PipPipPipPipPipPipPip
  • 667 Bài viết
Điểm đánh giá: 278 (khá)

Đã gửi 22 February 2012 - 04:14 PM

@Detailing : Bạn có thể cho tham khảo cái Lisp của bạn như lời bạn viết không?
Cái lisp của bạn cần thực ra trước đây theo hướng dẫn đó mình đã viết rồi, tuy nhiên nó có vài cái dở là: nếu cái tag đó nó ko nằm vuông góc như vậy, hoặc nó có nhiều phân đoạn hơn thì nó chạy tầm bậy lền => BỎ

Sáng nay, mình định ngồi viết thử cái Lisp này giúp cho bạn hantinh, nhưng không được. Tức thật :lol:

Như mình đã nói do nó ko hay nên ko làm -> bỏ (tức là xóa).
mình chỉ nhớ đã "mò" như sau:
Bạn xem cái entget cái mã 330 trước và sau thì nó sẽ có chỗ khác nhau (tọa độ các đỉnh của tag leader) sau đó sửa mấy cái tọa đó đó lại dùng command + append, subt, ....
rồi entmod nó.
đại khái là vậy. Nhưng như mình có nói nó chỉ đúng với 1 trương hợp này (3 đỉnh + vuông góc) thôi, các TH khác nó chạy bậy
Hình như mình có post comment về cái này bên Arttool rồi, Tue sang đó xem vậy :D.
Thân!
  • 0

Ideas don't matter, execution does!

1908412_308002392716743_8165279281236341


#36 hantinh

hantinh

    biết lệnh attdef

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

Đã gửi 23 February 2012 - 08:05 PM

các bác làm jif mà nói có vẻ nặng thế. AE chúng ta lên đây để thảo luận để có những hỗ trợ từ những AE khac mà. Nếu nó có dở tệ thì cũng có cách giải quyết mà.
theo mình thi ban đầu cái jif cũng có những điểm hay điểm dở của nó. sau thời gian chúng ta sẽ có những cách giải quyết cho những điểm mà ta thấy chưa hợp lý mà. Tất cả các soft đều thế mà. Đấy là suy nghĩ riêng của mình thôi.
Quan trọng là hướng và cách giải quyết thôi mà. rồi từ từ có cách thôi mà bác detail
  • 0

#37 Detailing

Detailing

    biết lệnh imageclip

  • Members
  • PipPipPipPipPipPipPip
  • 667 Bài viết
Điểm đánh giá: 278 (khá)

Đã gửi 23 February 2012 - 10:21 PM

các bác làm jif mà nói có vẻ nặng thế. AE chúng ta lên đây để thảo luận để có những hỗ trợ từ những AE khac mà. Nếu nó có dở tệ thì cũng có cách giải quyết mà.
theo mình thi ban đầu cái jif cũng có những điểm hay điểm dở của nó. sau thời gian chúng ta sẽ có những cách giải quyết cho những điểm mà ta thấy chưa hợp lý mà. Tất cả các soft đều thế mà. Đấy là suy nghĩ riêng của mình thôi.
Quan trọng là hướng và cách giải quyết thôi mà. rồi từ từ có cách thôi mà bác detail

Hehe, mình đâu nói gì đâu mà nặng nè. Chỉ là góp ý kiến cá nhân thôi vì mình có làm thử qua rồi, mắc công bạn cố gắng đến cuối lại thấy kết quả giống mình thì lại bực, hehe. Cách giải quyết thì giống như bài của bác tinhkhuc bên Arttool đây, theo đấy mà làm là ra kết quả với cái tag ví dụ (mấy cái khác thì ko dc :D)
Good luck!
  • 0

Ideas don't matter, execution does!

1908412_308002392716743_8165279281236341


#38 hantinh

hantinh

    biết lệnh attdef

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

Đã gửi 24 February 2012 - 11:54 AM

bạn detail ah! với mình thì thất bại nhiều hơn thành công, thế nên mình đau có cảm thấy bực đâu.Nhwngxx lúc như thế mình lại có thời gian ngội lại để phân tích và suy ngẫm để tìm ra con đường mới dựa trên cái đã có để hoàn thiện hơn thôi mà. Và đặc biết là cần sự trợ giúp của các AE trong lĩnh vực mà mình đang làm thôi mà
  • 0