auduongphuc 1 Báo cáo bài đăng Đã đăng Tháng 11 5, 2010 Tình hình là trong các bản vẽ Cad của mình rất hay dùng Wipeout để che các đối tượng khác, nhưng mỗi lần vẽ nó phải click thủ công => rất là lâu.nhiều khi đang vẽ, phải làm việc gì khác, quên nhấn ESC là y như rằng phải vẽ lại từ đầu.trong lệnhWipeout cũng có phần tùy chọn để chọn Pline.Nhưng chỉ sử dụng được cho đoạn thẳng, Giờ mình muốn nhờ các cao thủ viết dùm 1 Lisp, có thể chọn được tất cả các đối tượng : đường cong, Spline, Pline có cả đường cong ở trong đó...,nói chung là những đối tượng khép kín. rất mong sớm nhận được sự giúp đỡ. Mình cảm ơn rất nhiều Chúc CadViet ngày càng thành cô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
maihanh191 16 Báo cáo bài đăng Đã đăng Tháng 11 5, 2010 Tình hình là trong các bản vẽ Cad của mình rất hay dùng Wipeout để che các đối tượng khác, nhưng mỗi lần vẽ nó phải click thủ công => rất là lâu.nhiều khi đang vẽ, phải làm việc gì khác, quên nhấn ESC là y như rằng phải vẽ lại từ đầu.trong lệnhWipeout cũng có phần tùy chọn để chọn Pline.Nhưng chỉ sử dụng được cho đoạn thẳng, Giờ mình muốn nhờ các cao thủ viết dùm 1 Lisp, có thể chọn được tất cả các đối tượng : đường cong, Spline, Pline có cả đường cong ở trong đó...,nói chung là những đối tượng khép kín. rất mong sớm nhận được sự giúp đỡ. Mình cảm ơn rất nhiều Chúc CadViet ngày càng thành công. deufun c:wi:wipeout chon doi tuong tat ca loai duong nhan space de thuc hien lenh finish! :) 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
auduongphuc 1 Báo cáo bài đăng Đã đăng Tháng 11 8, 2010 deufun c:wi:wipeout chon doi tuong tat ca loai duong nhan space de thuc hien lenh finish! :) Ý của bạn "maihanh191" như vậy là sao? mình ko biết nên mới nhờ giúp đỡ, nếu ko được, hay có lý do gì thì cứ nói, đâu cần phải châm chọc nhau như vậy. ko được hay lắm đâu. có ai biết thì chỉ dùm mình, thank's 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
phamthanhbinh 3149 Báo cáo bài đăng Đã đăng Tháng 11 8, 2010 Ý của bạn "maihanh191" như vậy là sao? mình ko biết nên mới nhờ giúp đỡ, nếu ko được, hay có lý do gì thì cứ nói, đâu cần phải châm chọc nhau như vậy. ko được hay lắm đâu. có ai biết thì chỉ dùm mình, thank's Chào bạn Auduongphuc, Vấn đề của bạn có chút rắc rồi đối với đường spline, nếu chỉ là các polyline thì vấn đề sẽ đơn giản hơn. Hiện mình đang theo hướng chuyển spline thành polyline song như vậy không biết bạn có đồng ý không vì có thể cái Wipeout này sẽ không che hết spline của bạ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
ketxu 3004 Báo cáo bài đăng Đã đăng Tháng 11 8, 2010 Đã có bài bàn về vấn đề này rồi bạn ạ.Wipeout cho đường cong là rất khó,lúc đó phải chia ra thành rất nhiều đoạn thẳng nhỏ.Bạn thử tham khảo giải pháp hatch solid trong bài này xem sao http://www.cadviet.com/forum/index.php?sho...c=24041&hl= 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
Thaistreetz 539 Báo cáo bài đăng Đã đăng Tháng 11 8, 2010 Vì wipeout chỉ làm việc với pline đóng và được cấu tạo bởi hoàn toàn là các đoạn thẳng nên có thể dùng xử lý trường hợp này bằng cách vẽ lại đường pline (gồm cả các đoạn cong) hoặc spline bằng 1 đường Pline được chia nhỏ bởi các đoạn thẳng (độ dài các đoạn thẳng đó là tùy ý người dùng). Lisp này trên diễn đàn có rất lâu rồi thì phải, bạn chịu khó search sẽ ra thôi. Mình cũng hay dùng cách 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
Thaistreetz 539 Báo cáo bài đăng Đã đăng Tháng 11 8, 2010 Chức năng tìm kiếm của diễn đàn hình như đang bị lỗi. Mình post lại lisp của bác ssg cho bạn ;;*********************************************************** ;;;CONVERT TO PLINES PROGRAM WITH FULL COMMENTS! ;;;Convert all objects: Line, Pline, Spline, Arc, Circle, Ellipse_ ;;;to Plines. Length of 1 segment is specified by user ;;;Copy & Paste to Notepad, Saveas *.lsp, Appload then Type C2P to run ;;;Happy New Year 2008! ;;;Written by ssg - January 2008 - www.cadviet.com ;;;*********************************************************** ;;;------------------------------------------------------------- (defun makepl ( e d1 / ps pe d d2 p2);;;Make pline along curve e. Length of 1 segment = d1 (vl-load-com);;;Load Visual LISP extensions before use vlax-xxxx functions (setq ps (vlax-curve-getStartPoint e);;;Start point pe (vlax-curve-getEndPoint e);;;End point d (vlax-curve-getDistAtParam e (vlax-curve-getEndParam e));;;Length of curve e d2 d1;;;Init variable distance ) (command "pline");;;Call pline command (command ps);;;Start point (while (<= d2 d);;;While not over end point pe (setq p2 (vlax-curve-getPointAtDist e d2));;;Variable point at d2 = length along curve (command p2);;;Continue pline command from current point to p2 (setq d2 (+ d2 d1));;;Increase distance d2 by d1 );;;End while (command pe "");;;Pline to pe and finish command ) ;;;------------------------------------------------------------- (defun C:C2P( / d1 ss oldos i e ans);;;Convert to Plines (if (not d0) (setq d0 0.5));;;Init dividual distance, global variable (setq d1 (getreal (strcat "\nLength of 1 segment <" (rtos d0) ">:")));;;Input distance (if d1 (setq d0 d1) (setq d1 d0));;;Reset or get distance (setq ss (ssget '((0 . "LINE,LWPOLYLINE,SPLINE,ARC,CIRCLE,ELLIPSE")));;;Selection set oldos (getvar "osmode");;;Save osmode i 0;;;Init counter ) (setvar "osmode" 0);;;Disable osmode (repeat (sslength ss);;;Repeat for all entities in ss (setq e (ssname ss i));;;Set e for entity with ordinal i in selection set ss (makepl e d1);;;Use makepl function. Make pline along e (setq i (1+ i));;;Increase counter ) (initget "Y N");;;Init keywords (setq ans (getkword "\nDelete source objects? [Yes/No] :"));;;Get answer from user (if (= ans "Y") (command "erase" ss ""));;;Erase source objects if ans = "y" or "Y" (setvar "osmode" oldos);;;Reset osmode (princ);;;Silent quit ) ;;;------------------------------------------------------------- 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
KS.PhanThanhTu 76 Báo cáo bài đăng Đã đăng Tháng 11 9, 2010 Nếu về quan niệm lập trình Tạo đối tượng wipeout không thông qua command có sẵn của Cad đối với VBA là khó , Lisp thì mình ko dám chắc lắm Bởi lẽ không có đối tượng được hỗ trợ nào trong Vba cad có nghĩa là wipeout và lisp cũng vậy đối tượng này đc tạo qua việc load object arx Wipeout , mà việc sử dụng cái này thì mình chưa rõ lắm :) Chắc chỉ còn cách chuyển tất cả về pline rồi phải dùng lệnh Wipeout có sẵn thôi, mặc dù chưa cảm thấy thỏa mãn lắm :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
Thaistreetz 539 Báo cáo bài đăng Đã đăng Tháng 11 9, 2010 Nếu về quan niệm lập trình Tạo đối tượng wipeout không thông qua command có sẵn của Cad đối với VBA là khó , Lisp thì mình ko dám chắc lắm Bởi lẽ không có đối tượng được hỗ trợ nào trong Vba cad có nghĩa là wipeout và lisp cũng vậy đối tượng này đc tạo qua việc load object arx Wipeout , mà việc sử dụng cái này thì mình chưa rõ lắm :iluvyousmiley: Chắc chỉ còn cách chuyển tất cả về pline rồi phải dùng lệnh Wipeout có sẵn thôi, mặc dù chưa cảm thấy thỏa mãn lắm :D Đối tuợng wipeout có record dữ liệu mô tả rất rõ ràng (mình thử với cad2010). như vậy về nguyên tắc hoàn toàn có thể sử dụng hàm entmake để tạo ra 1 đối tuợng WIPEOUT. Tuy nhiên theo như mình hiểu thì đây lại là 1 đối tuợng phức và mỗi 1 đối tuợng wipeout có 1 UCS riêng. việc chuyển đổi toạ độ các đỉnh của wipeout cần tao từ UCS hiện hành sang UCS của chính wipeout đó thực sự là khá phức tạp và nhức đầu. Thôi thì cứ chơi hàm command cho lành, lisp chạy chậm 1 chút nhưng code đơn giản dễ đọc, dễ hiểu, dễ sử dụng. đỡ mệt mỏi với mấy cái ma trận biến đổi tọa độ. Mình thấy ngay cả các lisp trong express tool họ cũng chỉ xài hàm command 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