girl 5 Báo cáo bài đăng Đã đăng Tháng 11 4, 2011 Quick Code để bạn tham khảo. 1. Kiểu scale : (defun c:test(/ ss tl i en) (setq ss (ssget "X" (list (cons 0 "POLYLINE")(cons 8 "ENTTNTHIETKE"))) tl (getreal "Ti le scale :") i -1 ) (vl-load-com) (while (setq en (ssname ss (setq i (1+ i)))) (vla-setwidth (vlax-ename->vla-object en) 0 0 (* 0.18 tl)) ) ) 2. Kiểu cố định giá trị (defun c:test(/ ss tl i en) (setq ss (ssget "X" (list (cons 0 "POLYLINE")(cons 8 "ENTTNTHIETKE"))) tl (getreal "Kich thuoc mui ten :") i -1 ) (vl-load-com) (while (setq en (ssname ss (setq i (1+ i)))) (vla-setwidth (vlax-ename->vla-object en) 0 0 tl) ) ) @Truongngocdat Các bài viết của bạn đều không có dấu và không có tính chất xây dựng, đề nghị bạn tôn trọng người đọc và diễn đàn! Thân Hi. Anh KETXU viết lisp dễ sử dụng và nhanh, nhưng mà cái mũi tên như yêu cầu của em là nó bé lại thì đúng rồi nhưng mà mất cân đối quá, tức là khi mình chỉnh bé lại thì đồng nghĩa với việc phải ngắn lại theo kiểu Scale đối tượng nhìn cho đẹp và đỡ tốn diện tích chứ ạ ? Anh chỉnh để mình điều chỉnh cái mũi tên đó ngắn lại theo cái tỷ lệ Scale mà mình nhập vào được không ạ ? Cảm ơn anh nhìu nhìu ! 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
girl 5 Báo cáo bài đăng Đã đăng Tháng 11 4, 2011 Hi, mình cũng tập tành viết cái lisp mong là có ích cho bạn. Nguyên lý hoạt động là bạn phải chọn những thằng mũi tên, rồi lisp sẽ thay thế các mũi tên này bằng một block. trong file mình gửi đây là block có tên Girl, hình dạng thì mình scale mũi tên nhỏ chút xíu, bạn có thể chỉnh sửa cái block này theo dúng ý bạn. bạn cũng có thể thay đổi tên block nhưng lúc này bạn phải thay đổi luôn tên trong lisp nhá! đây là file cad có block Gilr là cái mũi tên màu đỏ nha: http://www.mediafire..._cau%5B2%5D.dwg (defun c:ic (/ dt sdt ent id ang p1 p2 os) (setq dt (ssget) sdt (sslength dt) id 0 os (getvar "osmode")) (command "undo" "be") (setvar "osmode" 0) (repeat sdt (setq ent (ssname dt id) id (1+ id) p1 (vlax-curve-getPointAtParam ent 0) p2 (vlax-curve-getPointAtParam ent 1) ang (/(*(angle p1 p2)180)pi) ) (command "insert" "Girl" p1 "1" "" ang) (entdel ent) ) (setvar "osmode" os) (command "undo" "end") ) Anh LP_HAI ạ, lisp của anh áp dụng với file đó thì chạy, nhưng khi dùng với file khác thì nó bị lệch vị trí của mũi tên đi.em gửi anh 1 file khác làm ví dụ để a tham khảo nhé, anh chạy thử với file này sẽ thấy lỗi ạ ! http://www.mediafire.com/?6qz5rhw6euect8s 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
chaytheomay 2 Báo cáo bài đăng Đã đăng Tháng 11 4, 2011 hic. Scale thì nói làm gì ạ ? vì nó có cả 1000 đối tượng. Ngồi scale đến bao h ạ ? hic ! bạn nên trách mình thì hơn.Trước khi làm thì phải định hướng trước.những chi tiết giống nhau thì nên sài 1 cái block thôi.1 tỉ cái cũng đc bạn sửa 1 cái thì 1 tỉ cái kia sẽ thay đổi theo.Nếu trong truong hợp này chỉ có 1 cách duy nhất là sc thôi, vì nó chỉ là đối tượng PL.Hoặc có thể tạo ra cái mũi tên mới sài 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
girl 5 Báo cáo bài đăng Đã đăng Tháng 11 4, 2011 bạn nên trách mình thì hơn.Trước khi làm thì phải định hướng trước.những chi tiết giống nhau thì nên sài 1 cái block thôi.1 tỉ cái cũng đc bạn sửa 1 cái thì 1 tỉ cái kia sẽ thay đổi theo.Nếu trong truong hợp này chỉ có 1 cách duy nhất là sc thôi, vì nó chỉ là đối tượng PL.Hoặc có thể tạo ra cái mũi tên mới sài nhé! Hic, anh mắng oan em rồi. CÁi mũi tên đó là do chương trình phần mềm chạy ra. không phải do e tự vẽ ra được. hic 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
lp_hai 225 Báo cáo bài đăng Đã đăng Tháng 11 4, 2011 Anh LP_HAI ạ, lisp của anh áp dụng với file đó thì chạy, nhưng khi dùng với file khác thì nó bị lệch vị trí của mũi tên đi.em gửi anh 1 file khác làm ví dụ để a tham khảo nhé, anh chạy thử với file này sẽ thấy lỗi ạ ! http://www.mediafire...6qz5rhw6euect8s Bạn đổi UCS lai trước khi dùng lệnh, UCS -> W 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 2.977 Báo cáo bài đăng Đã đăng Tháng 11 4, 2011 Hi. Anh KETXU viết lisp dễ sử dụng và nhanh, nhưng mà cái mũi tên như yêu cầu của em là nó bé lại thì đúng rồi nhưng mà mất cân đối quá, tức là khi mình chỉnh bé lại thì đồng nghĩa với việc phải ngắn lại theo kiểu Scale đối tượng nhìn cho đẹp và đỡ tốn diện tích chứ ạ ? Anh chỉnh để mình điều chỉnh cái mũi tên đó ngắn lại theo cái tỷ lệ Scale mà mình nhập vào được không ạ ? Cảm ơn anh nhìu nhìu ! Bạn biết để scale ngoài tỉ lệ scale còn cần có điểm gốc base Point, vậy theo bạn điểm đó sẽ là điểm nào trong pline (hiển thị mũi tê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
Tue_NV 3.909 Báo cáo bài đăng Đã đăng Tháng 11 4, 2011 Bạn biết để scale ngoài tỉ lệ scale còn cần có điểm gốc base Point, vậy theo bạn điểm đó sẽ là điểm nào trong pline (hiển thị mũi tên) đó ? Theo Tue_NV thì ý bạn ấy muốn cân đối lại mũi tên. Không nhất thiết phải scale rồi chỉnh lại. Và cái điểm mà Ketxu nói đó nằm trên đoạn thẳng nối từ điểm đầu đến điểm cuối của mũi tên Có 2 thông số đặt ra để bạn Girl nhập vào để chạy chương trình: - Một là Độ lớn của mũi tên : Trong hình vẽ của bạn là 0.18 - Hai là : Khoảng cách từ đỉnh của mũi tên tới chân mũi tên để bạn girl có thể cân đối lại mũi tên Thử nhé : (defun c:test(/ ss tl i e e1 e2 eg1 eg2 kc) ;;;;;copyright by Tue_NV (setq ss (ssget "X" (list (cons 0 "POLYLINE")(cons 8 "ENTTNTHIETKE"))) tl (getreal "Kich thuoc mui ten :") kc (getreal "Dinh mui ten den chan mui ten:") i -1 ) (vl-load-com) (while (setq e (ssname ss (setq i (1+ i)))) (setq e1 (entnext e) eg1 (entget e1) e2 (entnext e1) eg2 (entget e2) ) (entmod (subst (cons 41 tl) (assoc 41 eg1) eg1)) (entmod (subst (cons 10 (polar (vlax-curve-getstartpoint e) (angle (vlax-curve-getstartpoint e) (vlax-curve-getendpoint e)) kc) ) (assoc 10 eg2) eg2)) (entupd e1) (entupd e2) ) ) 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
girl 5 Báo cáo bài đăng Đã đăng Tháng 11 5, 2011 hihi ! lisp hay thật, Nó làm được những việc mà CAD không thể làm được ! Thanks anh nhìu nhìu na ! hii. Mà a xem chỉnh lại cái chế độ gõ của trang CADVIET, hiện tại đang bị lỗi cụ thể như sau: Khi mình tích vào trả lời thì bị mất con trỏ trong mục soạn thảo, và đánh chữ hay bị lỗi, khó sửa lỗi đó. Muốn hết lỗi thì pải bấm vào gửi bài viết rùi sửa lại thì mới nhìn thấy con trỏ. Phiền anh phản ánh lại với bên lập trình WEB về lỗi này và để fix lỗi. THanks anh. cảm ơn diễn đà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
girl 5 Báo cáo bài đăng Đã đăng Tháng 11 14, 2011 Hic ! Xin lỗi anh Tuệ hôm trước em test không kỹ, hì, bi giờ cái mũi tên thì chỉnh đẹp chuẩn rùi, nhưng khi mình chỉnh bé đi thì với cái đuôi cũ thì sẽ bị dài, Không biết anh có cách nào để chỉnh chiều dài cái đuôi mũi tê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
Tue_NV 3.909 Báo cáo bài đăng Đã đăng Tháng 11 15, 2011 Hic ! Xin lỗi anh Tuệ hôm trước em test không kỹ, hì, bi giờ cái mũi tên thì chỉnh đẹp chuẩn rùi, nhưng khi mình chỉnh bé đi thì với cái đuôi cũ thì sẽ bị dài, Không biết anh có cách nào để chỉnh chiều dài cái đuôi mũi tên ko ạ ? Có 3 thông số cho bạn nhập vào : - Một là Độ lớn của mũi tên : Trong hình vẽ của bạn là 0.18 -> (1) - Hai là : Khoảng cách từ đỉnh của mũi tên tới chân mũi tên để bạn girl có thể cân đối lại mũi tên (2) - Ba là : Tổng chiều dài mũi tên để bạn có thể chỉnh "đuôi mũi tên" (3) (3) > (2) nhé (defun c:test(/ ss tl i e e1 e2 e3 eg1 eg2 eg3 kc kc2) ;;;;;copyright by Tue_NV (setq ss (ssget "X" (list (cons 0 "POLYLINE")(cons 8 "ENTTNTHIETKE"))) tl (getreal "Kich thuoc mui ten :") kc (getreal "Dinh mui ten den chan mui ten:") kc2 (getreal "Tong chieu dai mui ten:") i -1 ) (vl-load-com) (if (> kc2 kc) (while (setq e (ssname ss (setq i (1+ i)))) (setq e1 (entnext e) eg1 (entget e1) e2 (entnext e1) eg2 (entget e2) e3 (entnext e2) eg3 (entget e3) ) (entmod (subst (cons 41 tl) (assoc 41 eg1) eg1)) (entmod (subst (cons 10 (polar (vlax-curve-getstartpoint e) (angle (vlax-curve-getstartpoint e) (vlax-curve-getendpoint e)) kc) ) (assoc 10 eg2) eg2)) (entmod (subst (cons 10 (polar (vlax-curve-getstartpoint e) (angle (vlax-curve-getstartpoint e) (vlax-curve-getendpoint e)) kc2) ) (assoc 10 eg3) eg3)) (entupd e1) (entupd e2) (entupd e3) ) ) ) 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