thuanledo 1 Báo cáo bài đăng Đã đăng Tháng 6 3, 2021 CHÀO CÁC ANH CHỊ, TÌNH HÌNH LÀ EM CÓ MỘT CÁI POLYLINE DẠNG RECTANG HOẶC 1 ĐA GIÁC NHIỀU ĐỈNH EM MUỐN OFFSET NÓ RA 500M THÌ CODE VBA AUTOCAD NHƯ THẾ NÀO MONG CÁC ANH CHỊ GIÚP ĐỠ HÌNH EM GỬI ĐÍNH KÈM BÊN DƯỚ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
DungNguyen685 40 Báo cáo bài đăng Đã đăng Tháng 6 3, 2021 Như này à. Nhớ đâu trên diễn đàn có rồ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
thuanledo 1 Báo cáo bài đăng Đã đăng Tháng 6 3, 2021 17 phút trước, DungNguyen685 đã nói: Như này à. Nhớ đâu trên diễn đàn có rồi. DẠ ĐÚNG RỒI CÓ LINK CHO EM XIN 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
gia_bach 1557 Báo cáo bài đăng Đã đăng Tháng 6 3, 2021 3 giờ trước, thuanledo đã nói: CHÀO CÁC ANH CHỊ, TÌNH HÌNH LÀ EM CÓ MỘT CÁI POLYLINE DẠNG RECTANG HOẶC 1 ĐA GIÁC NHIỀU ĐỈNH EM MUỐN OFFSET NÓ RA 500M THÌ CODE VBA AUTOCAD NHƯ THẾ NÀO MONG CÁC ANH CHỊ GIÚP ĐỠ Offset 500 và -500 rồi so sánh 2 pline mới, thằng nào có diện tích (AREA) lớn hơn thì chọn, xóa thằng kia. 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 6 4, 2021 ofs (offset vao trong de trong cay).lsp Lisp mình sưu tầm trên diễn đàn, hi vọng ko vi phạm bản quyền. Chắc là bạn đang cần cái này. Layer offset là layer đang hiện hành 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
thiep 366 Báo cáo bài đăng Đã đăng Tháng 6 4, 2021 22 giờ trước, gia_bach đã nói: Offset 500 và -500 rồi so sánh 2 pline mới, thằng nào có diện tích (AREA) lớn hơn thì chọn, xóa thằng kia. Một cách khác không phải so sánh diện tích rồi xoá đỡ tốn thời gian. Lisp này lấy trên nền lisp OFS của @tranducanh18 gửi ở trên (vl-load-com) (defun GetA (lst) (apply '+ (mapcar '(lambda (a b) (- (* (car b) (cadr a)) (* (car a) (cadr b)))) lst (cons (last lst) lst) ) ) ) (defun c:ofs (/ ss lay lst obj bit #d #dold) (setq ActDoc (vla-get-ActiveDocument (vlax-get-acad-object))) (vla-StartUndoMark ActDoc) (acet-sysvar-set '("cmdecho" 0 "osmode" 0)) (setq #dold (getvar "offsetdist")) (cond ((setq ss (ssget '((0 . "CIRCLE,ELLIPSE,*POLYLINE,SPLINE")))) (if (null (setq #d (getdist (strcat "\nOffsetdist <" (rtos #dold 2 2) ">"))) ) (setq #d #dold) (setvar "offsetdist" #d) ) (foreach ent (acet-ss-to-list ss) (setq obj (vlax-ename->vla-object ent) bit (GetA (acet-geom-vertex-list ent)) ) (if (vlax-method-applicable-p obj 'Offset) (cond ((< bit 0) (vlax-invoke obj 'Offset #d)) ((> bit 0) (vlax-invoke obj 'Offset (- #d))) ) ) ) ) (T (princ "\nNo thing to do")) ) (acet-sysvar-restore) (vla-EndUndoMark ActDoc) (princ) ) 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
alisp 73 Báo cáo bài đăng Đã đăng Tháng 6 4, 2021 Chủ thớt ở mục #1 xin code VBA chứ đâu có xin lisp đâu nà! 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
cuongtk2 401 Báo cáo bài đăng Đã đăng Tháng 6 5, 2021 Mình không rõ về VBA lắm nhưng quy trình cũng biết, offset 2 hướng được 2 cái pline. Có thể so sánh bằng Centroid to CurveClosedPoint, Area, hay tổng khoảng cách từ 1 điểm trên pline cũ đến toàn bộ điểm trên pline mới. Cái nào lớn hơn là ngoài. 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
anhcos 196 Báo cáo bài đăng Đã đăng Tháng 6 5, 2021 Tôi có cái tool bé xíu, viết cho mấy mục đích nho nhỏ, có phần chọn offset trong/ngoài đó, bác có thể tải về dùng thử ở đâ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
tanbqtb03 9 Báo cáo bài đăng Đã đăng Tháng 12 22, 2022 Vào lúc 5/6/2021 tại 22:17, anhcos đã nói: Tôi có cái tool bé xíu, viết cho mấy mục đích nho nhỏ, có phần chọn offset trong/ngoài đó, bác có thể tải về dùng thử ở đây. Link bị dead rồi ạh, nhờ a update lại link mới với ạh 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
quyenpv 2 Báo cáo bài đăng Đã đăng Tháng 8 6, 2023 Vào lúc 5/6/2021 tại 22:17, anhcos đã nói: Tôi có cái tool bé xíu, viết cho mấy mục đích nho nhỏ, có phần chọn offset trong/ngoài đó, bác có thể tải về dùng thử ở đây. Lại mượn giao diện của anh này. Cũng hàm hố viết thử vb.net xem thế nào, nhưng các anh cho hỏi sao đường polyline nó lại tạo kiểu này nhỉ Với polyline có giá trị âm < 0 thì nó tạo kiểu này Còn nếu giá trị dương > 0 thì nó lại ra thế nà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
quyenpv 2 Báo cáo bài đăng Đã đăng Tháng 8 6, 2023 Mất 180 dòng code đầy đủ chức năng 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 32 Báo cáo bài đăng Đã đăng Tháng 8 7, 2023 Vào lúc 5/6/2021 tại 12:25, cuongtk2 đã nói: Mình không rõ về VBA lắm nhưng quy trình cũng biết, offset 2 hướng được 2 cái pline. Có thể so sánh bằng Centroid to CurveClosedPoint, Area, hay tổng khoảng cách từ 1 điểm trên pline cũ đến toàn bộ điểm trên pline mới. Cái nào lớn hơn là ngoài. Như đường pline thì làm cách nào xác định in or out để xóa cái out Anh? Thanks! 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
cuongtk2 401 Báo cáo bài đăng Đã đăng Tháng 8 7, 2023 Theo hướng của pline, offset + sẽ sang phải và ngược lại. 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
limfx 32 Báo cáo bài đăng Đã đăng Tháng 8 7, 2023 13 phút trước, cuongtk2 đã nói: Theo hướng của pline, offset + sẽ sang phải và ngược lại. Cảm ơn anh! 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 157 Báo cáo bài đăng Đã đăng Tháng 8 7, 2023 27 phút trước, limfx đã nói: Như đường pline thì làm cách nào xác định in or out để xóa cái out Anh? Thanks! Đường line, pline như bạn vẽ thì làm sao có trong với ngoài. Chỉ đơn giản là bạn muốn offset về hướng nào. Mình không muốn offset 2 lần rồi so sánh để chọn 1. Mà dùng hàm Clockwise-p để so sánh từ trước sau đó mới offset. Ví dụ: 3 điểm ABC theo chiều kim đồng hồ thì DISTANCE = - DISTANCE Còn nếu pline kín thì xác định gần giống như vậy. muốn offset ra bên ngoài. Nếu pline các điểm theo chiều kim đồng hồ thì DISTANCE = - DISTANCE 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
cuongtk2 401 Báo cáo bài đăng Đã đăng Tháng 8 7, 2023 Clockwise-p chỉ đúng với toàn là chính nó thôi. Vì ít gặp nên mình không để ý. Nếu muốn lấy trong- ngoài thì nên so sánh Length. 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 157 Báo cáo bài đăng Đã đăng Tháng 8 7, 2023 5 phút trước, cuongtk2 đã nói: Clockwise-p chỉ đúng với toàn là chính nó thôi. Vì ít gặp nên mình không để ý. Nếu muốn lấy trong- ngoài thì nên so sánh Length. Em dùng clockwise-p chưa sai phát nào :)) bác dùng hàm nào ảo thế :)) Em hay dùng hàm này: (defun LM:ListClockwise-p ( lst ) (minusp (apply '+ (mapcar '(lambda ( a b ) (- (* (car b) (cadr a))(* (car a) (cadr b))) ) lst (cons (last lst) lst) ) ) ) ) 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
cuongtk2 401 Báo cáo bài đăng Đã đăng Tháng 8 7, 2023 1 phút trước, tannguyen291 đã nói: Em dùng clockwise-p chưa sai phát nào :)) bác dùng hàm nào ảo thế :)) Em hay dùng hàm này: (defun LM:ListClockwise-p ( lst ) (minusp (apply '+ (mapcar '(lambda ( a b ) (- (* (car b) (cadr a))(* (car a) (cadr b))) ) lst (cons (last lst) lst) ) ) ) ) Đầu tiên em cho 3 điểm đi cùng chiều kim đồng hồ, sau đó cua ngược kim đồng hồ rồi close. Vậy thô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
tannguyen291 157 Báo cáo bài đăng Đã đăng Tháng 8 7, 2023 5 phút trước, cuongtk2 đã nói: Đầu tiên em cho 3 điểm đi cùng chiều kim đồng hồ, sau đó cua ngược kim đồng hồ rồi close. Vậy thôi Vẫn không thấy có gì sai ở đây. Bác gửi file nào bị sai em xem sao. Chứ k hiều ý bác lắm. :)) 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
cuongtk2 401 Báo cáo bài đăng Đã đăng Tháng 8 7, 2023 13 phút trước, tannguyen291 đã nói: Em dùng clockwise-p chưa sai phát nào :)) bác dùng hàm nào ảo thế :)) Em hay dùng hàm này: (defun LM:ListClockwise-p ( lst ) (minusp (apply '+ (mapcar '(lambda ( a b ) (- (* (car b) (cadr a))(* (car a) (cadr b))) ) lst (cons (last lst) lst) ) ) ) ) Đầu tiên em cho 3 điểm đi cùng chiều kim đồng hồ, sau đó cua ngược kim đồng hồ rồi close. Vậy thô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
tannguyen291 157 Báo cáo bài đăng Đã đăng Tháng 8 7, 2023 7 phút trước, cuongtk2 đã nói: Đầu tiên em cho 3 điểm đi cùng chiều kim đồng hồ, sau đó cua ngược kim đồng hồ rồi close. Vậy thôi Nếu các cạnh của pline không giao nhau thì luôn chuẩn ạ. Chứ với hình như của bác chỉ đơn thuần là nét vẽ trên máy không có tính áp dụng trong thực tế thiết kế. có thể thêm hàm check vào báo lỗi cho người dùng thì hợp lý hơ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
Doan Van Ha 3205 Báo cáo bài đăng Đã đăng Tháng 8 7, 2023 Hàm offset vào trong hoặc ra ngoài tôi viết sẵn. Ai cần thì dùng. ;----- Offset + (out) / - (in). Tra ve enttity. By HA (defun Offset_dau(ent kc / obj obj1 obj2 dau) (setq obj (vlax-ename->vla-object ent) obj1 (car (vlax-invoke obj 'Offset 1E-3)) obj2 (car (vlax-invoke obj 'Offset -1E-3)) dau (if (> (vla-get-Area obj1)(vla-get-Area obj2)) + -)) (mapcar 'vla-delete (list obj1 obj2)) (vlax-vla-object->ename (car (vlax-invoke obj 'Offset (dau kc))))) 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
cuongtk2 401 Báo cáo bài đăng Đã đăng Tháng 8 7, 2023 Với trường hợp không giao cũng vậy thôi em. Còn có áp dụng trong thực tế hay không thì dính đòn mới biết nó là có thậ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
tannguyen291 157 Báo cáo bài đăng Đã đăng Tháng 8 7, 2023 22 phút trước, cuongtk2 đã nói: Với trường hợp không giao cũng vậy thôi em. Còn có áp dụng trong thực tế hay không thì dính đòn mới biết nó là có thật. theo hình của bác là cùng chiều kim đồng hồ đúng rồi mà bác. :)) có gì sai đâu. bác thử thêm hàm offset xem có sai chỗ nào. :)) Cùng chiều thì offset - ngược chiều thì offset + bác 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