tannguyen291 128 Báo cáo bài đăng Đã đăng Tháng 12 29, 2022 8 phút trước, Duong Nhat Duy đã nói: Hê hê cảm ơn bạn nhé, để mình chỉnh sửa lại lisp cho ngon ngẻ :)) chưa chắc đã ngon hơn đâu bạn Trong lập trình có 1 câu là cái gì đang hoạt động tốt thì đừng sửa nó. :) với file cad nhẹ nhàng lệnh của mình chạy nhanh hơn. nhưng với file nặng thì 1 lệnh command nặng sẽ nhanh hơn 10 lệnh command nhẹ. :)) Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
NTHAHT 79 Báo cáo bài đăng Đã đăng Tháng 12 30, 2022 Với phương án Boundary có vẻ chưa được ổn. 1. Khi có 3 miền kín lần lượt lồng vào nhau (ví dụ dễ hình dung nhất là 3 đường tròn đồng tâm có bán kính khác nhau, muốn pick tính dải ngoài cùng thì nó trừ luôn cả diện tích cả 2 đường tròn phía trong. 2. Hàm BoundaryAreaPoint xử lý chưa triệt để nếu vùng pick tính diện tích có MTEXT nằm trong đó. Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
Duong Nhat Duy 302 Báo cáo bài đăng Đã đăng Tháng 12 30, 2022 Ủa vậy hả, qua mình cũng chưa test thử, vậy chắc vẫn dùng command thôi, né được cái thuật toán tính diện tích lồng nhau. Mà nữa là khi HPQUICKPREVIEW để OFF thì lệnh Hatch khá nhẹ, vùng nào ko hatch đc nó ko ra gì luôn chứ ko quay quay mất time. Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
tannguyen291 128 Báo cáo bài đăng Đã đăng Tháng 12 30, 2022 1 giờ trước, NTHAHT đã nói: Với phương án Boundary có vẻ chưa được ổn. 1. Khi có 3 miền kín lần lượt lồng vào nhau (ví dụ dễ hình dung nhất là 3 đường tròn đồng tâm có bán kính khác nhau, muốn pick tính dải ngoài cùng thì nó trừ luôn cả diện tích cả 2 đường tròn phía trong. 2. Hàm BoundaryAreaPoint xử lý chưa triệt để nếu vùng pick tính diện tích có MTEXT nằm trong đó. Vấn đề 1 không thể sảy ra. Vì mỗi lần pick đã kết thúc lệnh bo và tính toán diện tích rồi. lần pick thứ 2 lại kết thúc lệnh bo và tính lần tiếp theo sau đó mới công tổng các lần vừa rồi. không tính gộp bạn có thể test trực tiếp và đưa ra con số cho mình. Vấn đề thứ 2 bạn sảy ra cả khi dùng hatch và mình cũng có cách sửa cho nó. (setq ss (ssget "all" '((0 . "LINE,*POLYLINE,CIRCLE,ARC,SPLINE")))) (VL-cmdf "_.boundary" "A" "B" "N" ss ...... các bạn đọc kỹ code của mình rồi hãy phán. please 1 Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
NTHAHT 79 Báo cáo bài đăng Đã đăng Tháng 12 30, 2022 1. Mình đã test trên lisp của bạn (chứ không phải chỉ đọc mà phán). Kết quả được 60 khi pick vào cái vùng gạch chéo đó, lẽ ra phải là: 10*10-6*6=64. 2. Mình đã nói là cái hàm BoundaryAreaPoint chưa triệt để ... Hình chú giải cho mục 1 ở trên. Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
NTHAHT 79 Báo cáo bài đăng Đã đăng Tháng 12 30, 2022 44 phút trước, tannguyen291 đã nói: Vấn đề 1 không thể sảy ra. Vì mỗi lần pick đã kết thúc lệnh bo và tính toán diện tích rồi. lần pick thứ 2 lại kết thúc lệnh bo và tính lần tiếp theo sau đó mới công tổng các lần vừa rồi. không tính gộp bạn có thể test trực tiếp và đưa ra con số cho mình. Vấn đề thứ 2 bạn sảy ra cả khi dùng hatch và mình cũng có cách sửa cho nó. (setq ss (ssget "all" '((0 . "LINE,*POLYLINE,CIRCLE,ARC,SPLINE")))) (VL-cmdf "_.boundary" "A" "B" "N" ss ...... các bạn đọc kỹ code của mình rồi hãy phán. please Cái này cũng chưa triệt để... Cái hình trong màu trắng là Block. Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
NTHAHT 79 Báo cáo bài đăng Đã đăng Tháng 12 30, 2022 Khi đưa "INSERT" vào filter list...=> "LINE,*POLYLINE,CIRCLE,ARC,SPLINE,INSERT" Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
tannguyen291 128 Báo cáo bài đăng Đã đăng Tháng 12 30, 2022 @NTHAHT Rất xin lỗi vì mình không nghĩ tới trường hợp này chỉ cần bo ở vùng xanh nó tạo ra cả đường bên trong. nhưng không sao mình đã fix lại hàm của mình (defun BoundaryAreaPoint (pt / ent lst area) (setq ent (entlast)) (vl-cmdf "_.boundary" "A" "I" "Y" "O" "R" "X" pt "") (while (setq ent (entnext ent)) (setq lst (cons (vlax-ename->vla-object ent) lst)) ) (if (< 1 (length lst)) (progn (setq lst (vl-sort lst '(lambda (a b) (> (vla-get-area a) (vla-get-area b))))) (foreach item (cddr lst) (vla-boolean (cadr lst) acunion item) ) (vla-boolean (car lst) acsubtraction (cadr lst)) ) ) (setq area (vla-get-area (CAR lst))) (LIST area (CAR lst)) ) tks bạn nhé. mình chưa tính hết các khả năng còn việc thêm bộ lọc là tuỳ ở chủ thớt thích thêm cái nào thì thêm vậy. Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
NTHAHT 79 Báo cáo bài đăng Đã đăng Tháng 12 30, 2022 Còn trường hợp này nữa, trong đó: -> Ngoài là cái Rectang, trong là cái block, block này bao gồm: - DT1 là Mtext - TB-01 là ATT (multiline) - BLOCK-1 là Multileader. - Rectang màu đỏ. *** Đối với Hatch thì các đối tượng đó được bỏ qua. Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
tannguyen291 128 Báo cáo bài đăng Đã đăng Tháng 12 30, 2022 Hatch của mình không hề được bỏ qua bạn ơi. Vấn đề này người dùng phải quản lý đối tượng của mình thôi. :D Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
NTHAHT 79 Báo cáo bài đăng Đã đăng Tháng 12 30, 2022 27 phút trước, tannguyen291 đã nói: Hatch của mình không hề được bỏ qua bạn ơi. Vấn đề này người dùng phải quản lý đối tượng của mình thôi. :D Bỏ qua là khi tính diện tích, còn view thì nó vẫn trừ đi. Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
Duong Nhat Duy 302 Báo cáo bài đăng Đã đăng Tháng 12 30, 2022 Nay mình mới xem lại code của bạn @tannguyen291 , hóa ra bạn vẫn dùng command Boundary. Cá nhân mình thì thấy Hatch (sau khi đã tắt HPQUICKPREVIEW) với Boundary nó như nhau, đối với những vùng có nhiều đối tượng phức tạp thì cả 2 lệnh đều chạy lâu, đối với những vùng lỗi thì cả 2 lệnh đều ko chạy ra gì. Tính ra Hatch vẫn hay hơn vì ko tạo ra nhiều đối tượng như Boundary, và diện tích của Hatch nó tự xử lý đc 1 số vấn đề như bạn @NTHAHT đã nói, ví dụ trong Hatch có Mtext thì diện tích Hatch coi như ko có Mtext (mặc dù nó hiển thị phần Mtext ko đc hatch). Còn dùng Boundary thì cần thêm cả tá thuật toán để xử lý kết quả. Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
Duong Nhat Duy 302 Báo cáo bài đăng Đã đăng Tháng 1 4, 2023 33 phút trước, Nguyễn Hà Huy đã nói: cho mk hỏi giờ muốn lisp ra số mà nó tự chia cho 1000 hoặc 1000000 thì sửa như nào vậy, vd: lisp ra 2344750003.626 muốn nó về 2344.75 thôi ấy Tạm thời bạn chịu khó sửa tay nhé :v, mấy hôm nữa có time mình sẽ thêm cái tỉ lệ này vào sau Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
tranducanh18 1 Báo cáo bài đăng Đã đăng Tháng 1 6, 2023 Vào lúc 4/1/2023 tại 10:25, Duong Nhat Duy đã nói: Tạm thời bạn chịu khó sửa tay nhé :v, mấy hôm nữa có time mình sẽ thêm cái tỉ lệ này vào sau Mình cùng câu hỏi và cách sửa dấu chấm sang dấu phẩy để đưa vào exel? Tks b Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
tannguyen291 128 Báo cáo bài đăng Đã đăng Tháng 1 7, 2023 20 giờ trước, tranducanh18 đã nói: Mình cùng câu hỏi và cách sửa dấu chấm sang dấu phẩy để đưa vào exel? Tks b Bạn có thể tham khảo bài viết của mình có tuỳ chọn unit và định dạng số liệu đầy đủ. 1 Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
Duong Nhat Duy 302 Báo cáo bài đăng Đã đăng Tháng 2 8, 2023 Vào lúc 6/1/2023 tại 14:31, tranducanh18 đã nói: Mình cùng câu hỏi và cách sửa dấu chấm sang dấu phẩy để đưa vào exel? Tks b Vào lúc 26/1/2023 tại 11:45, Nguyễn Hà Huy đã nói: rất mong bác dành thời gian cải tiến lisp, lisp của bác dùng rất tiện là nhanh Vào lúc 23/12/2022 tại 01:41, doanquanghuy đã nói: Thank bạn! Mình gặp phải lỗi DT1 too many agruments thì làm sao sửa được ạ? Mình dùng AutoCAD Architecture 2020. Vào lúc 22/12/2022 tại 16:52, tanbqtb03 đã nói: Cám ơn a Mình đã cập nhật lại lisp mới trên đầu topic r nhé, tất cả đều có thể hiệu chỉnh được trong lệnh TL 1 Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
HVQ01 16 Báo cáo bài đăng Đã đăng Tháng 2 9, 2023 Vào lúc 20/12/2022 tại 16:30, Duong Nhat Duy đã nói: Gửi đến các bạn 1 lisp tính diện tích all-in-one, đơn giản, dễ dùng, và có thể tính được theo nhiều yêu cầu đề bài. Cách dùng: - Load lisp, nhập lệnh TL để thiếp lập các thông số như đơn vị, cao chữ,… Chỉ cần khai báo 1 lần - Các lệnh tính diện tích bao gồm 4 lệnh riêng biệt như sau: DT1: pick điểm, bấm đâu tính đó DT2: pick nhiều điểm, cộng gộp vào nhau (text kết quả có thể tạo mới bằng cách bấm vào khoảng trắng hoặc sửa text, att bằng cách bấm chọn 1 text, att đã có sẵn trên bản vẽ) DT3: chọn đối tượng, có thể chọn được nhiều đối tượng cùng lúc, nhiều kiểu đối tượng ví dụ: Pline, Spline, Hatch, Region,… DT4: như DT3 nhưng là chọn 1 nhóm đối tượng, kết quả là tổng diện tích các đối tượng (text kết quả có thể tạo mới bằng cách bấm vào khoảng trắng hoặc sửa text, att bằng cách bấm chọn 1 text, att đã có sẵn trên bản vẽ) Bonus: kết quả xuất ra có thể là Block do mình định nghĩa (ví dụ Block tem đất), khai báo trong lệnh TL File lisp: Tinh dien tich.lsp Chúc các bạn thành công :))) bác cho em hỏi em gõ TL thấy bão lỗi như này là sao ạ, em thử trên cad 21 và cad18 cũng lỗi tương tự Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
Duong Nhat Duy 302 Báo cáo bài đăng Đã đăng Tháng 2 10, 2023 22 giờ trước, HVQ01 đã nói: bác cho em hỏi em gõ TL thấy bão lỗi như này là sao ạ, em thử trên cad 21 và cad18 cũng lỗi tương tự Mình đã fix lại r nhé ! 1 Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
tranducanh18 1 Báo cáo bài đăng Đã đăng Tháng 2 11, 2023 18 giờ trước, Duong Nhat Duy đã nói: Mình đã fix lại r nhé ! Vào lúc 8/2/2023 tại 16:53, Duong Nhat Duy đã nói: Mình đã cập nhật lại lisp mới trên đầu topic r nhé, tất cả đều có thể hiệu chỉnh được trong lệnh TL Cảm ơn bạn nhiều nhé! Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
tranducanh18 1 Báo cáo bài đăng Đã đăng Tháng 2 22, 2023 Vào lúc 20/12/2022 tại 16:30, Duong Nhat Duy đã nói: Gửi đến các bạn 1 lisp tính diện tích all-in-one, đơn giản, dễ dùng, và có thể tính được theo nhiều yêu cầu đề bài. Cách dùng: - Load lisp, nhập lệnh TL để thiếp lập các thông số như đơn vị, cao chữ,… Chỉ cần khai báo 1 lần - Các lệnh tính diện tích bao gồm 4 lệnh riêng biệt như sau: DT1: pick điểm, bấm đâu tính đó DT2: pick nhiều điểm, cộng gộp vào nhau (text kết quả có thể tạo mới bằng cách bấm vào khoảng trắng hoặc sửa text, att bằng cách bấm chọn 1 text, att đã có sẵn trên bản vẽ) DT3: chọn đối tượng, có thể chọn được nhiều đối tượng cùng lúc, nhiều kiểu đối tượng ví dụ: Pline, Spline, Hatch, Region,… DT4: như DT3 nhưng là chọn 1 nhóm đối tượng, kết quả là tổng diện tích các đối tượng (text kết quả có thể tạo mới bằng cách bấm vào khoảng trắng hoặc sửa text, att bằng cách bấm chọn 1 text, att đã có sẵn trên bản vẽ) Bonus: kết quả xuất ra có thể là Block do mình định nghĩa (ví dụ Block tem đất), khai báo trong lệnh TL File lisp (Update 10/02/2023): Tinh dien tich.lsp Chúc các bạn thành công :))) Anh có thể cải thiện cái lisp này khi chọn Block mình có thể thay đổi được tên block rải ra theo mình chọn tên (ví dụ là chọn CX thay vì LK) và nó sẽ rải theo hatch số thứ tự block tăng dần như CX-01 CX-02 theo hướng mình chọn ko ạ? Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
Duong Nhat Duy 302 Báo cáo bài đăng Đã đăng Tháng 2 22, 2023 2 giờ trước, tranducanh18 đã nói: Anh có thể cải thiện cái lisp này khi chọn Block mình có thể thay đổi được tên block rải ra theo mình chọn tên (ví dụ là chọn CX thay vì LK) và nó sẽ rải theo hatch số thứ tự block tăng dần như CX-01 CX-02 theo hướng mình chọn ko ạ? Bạn dùng thêm lisp đánh số tt ở topic này nhé, 2 lisp mục đích nó khác nhau nên mình cũng ko muốn gộp nó vào 1 Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
tuan9002 11 Báo cáo bài đăng Đã đăng Tháng 2 24, 2023 Vào lúc 20/12/2022 tại 16:30, Duong Nhat Duy đã nói: Gửi đến các bạn 1 lisp tính diện tích all-in-one, đơn giản, dễ dùng, và có thể tính được theo nhiều yêu cầu đề bài. Cách dùng: - Load lisp, nhập lệnh TL để thiếp lập các thông số như đơn vị, cao chữ,… Chỉ cần khai báo 1 lần - Các lệnh tính diện tích bao gồm 4 lệnh riêng biệt như sau: DT1: pick điểm, bấm đâu tính đó DT2: pick nhiều điểm, cộng gộp vào nhau (text kết quả có thể tạo mới bằng cách bấm vào khoảng trắng hoặc sửa text, att bằng cách bấm chọn 1 text, att đã có sẵn trên bản vẽ) DT3: chọn đối tượng, có thể chọn được nhiều đối tượng cùng lúc, nhiều kiểu đối tượng ví dụ: Pline, Spline, Hatch, Region,… DT4: như DT3 nhưng là chọn 1 nhóm đối tượng, kết quả là tổng diện tích các đối tượng (text kết quả có thể tạo mới bằng cách bấm vào khoảng trắng hoặc sửa text, att bằng cách bấm chọn 1 text, att đã có sẵn trên bản vẽ) Bonus: kết quả xuất ra có thể là Block do mình định nghĩa (ví dụ Block tem đất), khai báo trong lệnh TL File lisp (Update 10/02/2023): Tinh dien tich.lsp Chúc các bạn thành công :))) Có cách nào xóa thông báo mỗi lần mở cad lên không bác. 2 Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
limfx 19 Báo cáo bài đăng Đã đăng Tháng 2 24, 2023 Tôn trọng tác giả xíu, chứ xóa thông báo ko nên 1 Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
Duong Nhat Duy 302 Báo cáo bài đăng Đã đăng Tháng 2 24, 2023 5 giờ trước, tuan9002 đã nói: Có cách nào xóa thông báo mỗi lần mở cad lên không bác. Ko vấn đề gì bạn ơi, bạn thêm dấu ; vào đầu dòng này là đc. Nếu quên lệnh bạn có thể gõ ?? để hiện cái bảng đó lên. Lisp mình viết gà nên đăng hẳn code mở lên đây cho ae vừa xem vừa sửa hộ luôn :)) 1 Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
mr.thanh2610 1 Báo cáo bài đăng Đã đăng Tháng 2 26, 2023 Bác @Duong Nhat Duy cho mình hỏi có thể thêm 2 lựa chọn cho cách tính lệnh DT2 pick điểm-nhiều điểm là : 1 lựa chọn trừ lỗ khoét (như lisp hiện tại), 2 pick tới đâu cộng dồn tới đó (thêm vào) được không ạ, Vì mình đang muốn tính kiểu Pick-nhiều điểm S=S1+S2+S3+S4 hoặc S=S1+S2+S3 chẳng hạn.Mong được phản hồi từ bác, cảm ơn ạ P/s: Mình biết có cách tính DT4 sẽ giải quyết vấn đề trên nhưng ý mình muốn tính trong trường hợp không có hatch và pick nhiều điểm 1 Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác