Danh Cong 422 Báo cáo bài đăng Đã đăng Tháng 6 27, 2016 Chào các anh chị ạ. Em mới tập viết lisp, chỉ viết được cách dải Leader theo 1 đường thẳng, các leader dải theo 1 khoảng cách định sẵn thôi. Giờ em muốn nâng cấp nó - Hoặc cũng có thể phải viết 1 lisp mới hoàn toàn mà em thì chưa hiểu rõ lắm. Mục tiêu của em như sau. - Có 1 số đường thẳng như hình vẽ. Đường thẳng A-B giao cắt với các đường thẳng đó. - EM muốn vẽ n đường Leader, với điểm cuối là A, còn điểm đầu là giao điểm của đường thẳng A-B với các đường thẳng còn lại Mong các anh chị giúp đỡ. 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
Danh Cong 422 Báo cáo bài đăng Đã đăng Tháng 6 27, 2016 Lisp này của em thì chỉ cố định được điểm cuối của Learder. Còn điểm đầu thì phải Pick thủ công, nếu phải vẽ nhiều Leader thì pick điểm mất nhiều thời gian quá. Do vậy nếu xác định được giao điểm của đường thẳng A-B với các đường thẳng kia thì tốt quá http://www.cadviet.com/upfiles/6/124641_lee.txt 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
quocmanh04tt 635 Báo cáo bài đăng Đã đăng Tháng 6 28, 2016 Cái này nên làm MLeader luôn để các Leader nó kết thành 1 đối tượng. Lisp sửa lại của bạn: (defun c:lee (/ a b c cmd enl i ssl tmp) (setq cmd (getvar 'CMDECHO)) (setvar 'CMDECHO 0) (command "undo" "be") (if (and (setq a (getpoint "\nChon diem Cuoi Leader")) (setq b (getpoint a "\nChon diem Dau ve Leader"))) (progn ;;; (command "Leader" b a "" "" "n") (command "LINE" b a "") (setq tmp (entlast)) (setq ssl (ssget "_F" (list a b) '((0 . "*LINE")))) (setq i -1) (while (setq enl (ssname ssl (setq i (1+ i)))) (and (Setq c (car (acet-geom-intersectwith enl tmp 0))) (command "leader" c a "" "" "n"))) (entdel tmp))) (command "undo" "end") (setvar 'CMDECHO cmd) (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
Danh Cong 422 Báo cáo bài đăng Đã đăng Tháng 6 29, 2016 Em cám ơn ạ :) Em tìm tòi học lisp mấy tuần, chưa biết cách để xử lý cơ sở dữ liệu của đối tượng được chọn. ANh có thể giải thích chút ít về cú pháp : (ssget "_F" (list a b) '((0 . "*LINE")) và (and (Setq c (car (acet-geom-intersectwith enl tmp 0))) Cái này nên làm MLeader luôn để các Leader nó kết thành 1 đối tượng. Lisp sửa lại của bạn: (defun c:lee (/ a b c cmd enl i ssl tmp) (setq cmd (getvar 'CMDECHO)) (setvar 'CMDECHO 0) (command "undo" "be") (if (and (setq a (getpoint "\nChon diem Cuoi Leader")) (setq b (getpoint a "\nChon diem Dau ve Leader"))) (progn ;;; (command "Leader" b a "" "" "n") (command "LINE" b a "") (setq tmp (entlast)) (setq ssl (ssget "_F" (list a b) '((0 . "*LINE")))) (setq i -1) (while (setq enl (ssname ssl (setq i (1+ i)))) (and (Setq c (car (acet-geom-intersectwith enl tmp 0))) (command "leader" c a "" "" "n"))) (entdel tmp))) (command "undo" "end") (setvar 'CMDECHO cmd) (princ)) 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
quocmanh04tt 635 Báo cáo bài đăng Đã đăng Tháng 6 29, 2016 Bạn tìm hiểu hàm: - ssget về chọn và lọc đối tượng. - acet-geom-intersectwith là hàm (của Exprres) tìm giao điểm của enl và tmp Trên 4r có nhiều bài nói về các hàm đó 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
vcdichoi 7 Báo cáo bài đăng Đã đăng Tháng 7 28, 2020 Vào lúc 29/6/2016 tại 10:14, quocmanh04tt đã nói: Bạn tìm hiểu hàm: - ssget về chọn và lọc đối tượng. - acet-geom-intersectwith là hàm (của Exprres) tìm giao điểm của enl và tmp Trên 4r có nhiều bài nói về các hàm đó rồi. 4r là gì vậy 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
Ma Vương 36 Báo cáo bài đăng Đã đăng Tháng 7 28, 2020 49 phút trước, vcdichoi đã nói: 4r là gì vậy anh? Chắc là forum 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