elleHCSC 98 Báo cáo bài đăng Đã đăng Tháng 2 16, 2011 1 đoạn lsp lấy giá trị của lwpolyline (VD lấy toạ độ điểm các đỉnh LWPOLYLINE) mong bác chỉ dùm Xem thêm đoạn code Getvert của bác SSG nhé : (defun GetVert (e / i L CL k x LL) ;;;Return list Point of all vertex from pline e (vl-load-com) (setq i 0 k 0 L nil) (setq CL (ent_close e)) (if (= CL 1) (setq k (fix (+ (vlax-curve-getEndParam e) 1))) (setq k (fix (+ (vlax-curve-getEndParam e) 2))) ) (repeat k (setq L (append L (list (vlax-curve-getPointAtParam e i)))) (setq i (1+ i)) ) (foreach x L (if (/= x nil) (setq LL (append LL (list x)))) ) LL ); (defun ent_close (e / cl sp ep x_ep x_sp y_ep y_sp) ;Return integer value (0 or 1) (vl-load-com) (setq sp (vlax-curve-getStartPoint e) ep (vlax-curve-getEndPoint e) x_sp (cadr sp) y_sp (car sp) x_ep (cadr ep) y_ep (car ep) ) (if (and (= x_sp x_ep) (= y_sp y_ep)) (setq cl 1) ;=1 is Close (setq cl 0) ) ); 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
18011985 62 Báo cáo bài đăng Đã đăng Tháng 2 16, 2011 Xem thêm đoạn code Getvert của bác SSG nhé : Cảm ơn pác nhưng pác ui ý em hỏi ở đây lấy toạ độ điểm của đỉnh và lấy luôn dxf 40, 41, 42 của đỉnh đấy luôn có được k? VD POLYLINE ((-1 . <Entity name: 7c51eea8>) (0 . POLYLINE) (330 . <Entity name: 7ec89338>) (5 . 1086ED) (100 . AcDbEntity) (67 . 1) (410 . A3) (8 . 0) (62 . 150) (100 . AcDb2dPolyline) (66 . 1) (10 0.0 0.0 0.0) (70 . 0) (40 . 0.0) (41 . 0.0) (210 0.0 0.0 1.0) (71 . 0) (72 . 0) (73 . 0) (74 . 0) (75 . 0)) Thì sau mỗi lần next của dxf 66 ta lấy được giá trị 1 điểm. Nhưng còn với LWPOLYLINE ((-1 . <Entity name: 7c51eef8>) (0 . LWPOLYLINE) (330 . <Entity name: 7ec89338>) (5 . 1086F7) (100 . AcDbEntity) (67 . 1) (410 . A3) (8 . 0) (62 . 150) (100 . AcDbPolyline) (90 . 8) (70 . 1) (43 . 0.0) (38 . 0.0) (39 . 0.0) (10 -615769.0 -189154.0) (40 . 0.0) (41 . 0.0) (42 . -0.414214) (10 -615764.0 -189149.0) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 -615523.0 -189149.0) (40 . 0.0) (41 . 0.0) (42 . -0.414214) (10 -615518.0 -189154.0) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 -615518.0 -189393.0) (40 . 0.0) (41 . 0.0) (42 . -0.414214) (10 -615523.0 -189398.0) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 -615764.0 -189398.0) (40 . 0.0) (41 . 0.0) (42 . -0.414214) (10 -615769.0 -189393.0) (40 . 0.0) (41 . 0.0) (42 . 0.0) (210 0.0 0.0 1.0)) Thì điểm chỉ cho 3 giá trị dxf 10 40 41 42 thì lấy ra kiểu chi. Mong các pác chỉ cho em. 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.984 Báo cáo bài đăng Đã đăng Tháng 2 16, 2011 Sao bác không list các list 10 (point),40 (Swidth),41(Ewidth),42 (bugle) thành 4 list riêng biệt trong cùng 1 vòng lặp thì nó sẽ có tính tương ứng ?Lúc xử lý thì lấy nth i của cả 4 list Ví dụ ntn : (defun c:ex() (vl-load-com) (defun loc (lst vl /) (setq lst(mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) vl)) lst)))) (setq ent (entget(car(entsel)));CHon LWLPolyline lst10 (loc ent 10) lst40 (loc ent 40) lst41 (loc ent 41) lst42 (loc ent 42) )) 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
Skywings 49 Báo cáo bài đăng Đã đăng Tháng 4 7, 2011 Mình thì hay dùng cách đơn giản này: gõ lệnh PEDIT -> Reverse Tùy chọn này hình như bắt đầu xuất hiện từ AutoCAD 2010, bản 2007 hông thấy, 2008-2009 chưa dùng nên hog bít ^^ ! 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
colombus 3 Báo cáo bài đăng Đã đăng Tháng 4 13, 2015 Mong các bác viết lisp vấn đề này có thể áp dụng cho multiline (mline). Tôi vẽ mline cây thép hình V (justify = zero, đường tim của nó cách mép là 2 hai khoảng khác nhau). Mỗi lần muốn đổi chiều thì phải đổi scale của nó từ + sang - (ví dụ 1 phải đổi thành -1) , khi chưa có lisp thì phải làm thế thôi. Nhưng có lisp thì sẽ nhanh hơn nhiều. Xin cảm ơ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