nguyentam0920 0 Báo cáo bài đăng Đã đăng Tháng 4 17, 2008 Chào các bác...! Em là thành viên mới..! Có những lúc chúng ta cần chèn 1 loại block vào những điểm giao nhau(intersection),nếu những điểm giao nhau đó nhiều lên đến hàng trăm,hàng ngàn mà lại không thể dùng lệnh array được thì copy mất khá nhiều thời gian.Em đang nghĩ đến 1 lisp có thể hỗ trợ công việc này. Hiện tại em đang tìm lisp có chức năng dạng này.Bác nào biết thì chỉ em với!Xin cảm ơn nhiều...Em chưa biết gì về autolisp nên không tự viết được.Chỉ có ý tưởng thế 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
duy782006 1597 Báo cáo bài đăng Đã đăng Tháng 4 17, 2008 Chào các bác...!Em là thành viên mới..! Có những lúc chúng ta cần chèn 1 loại block vào những điểm giao nhau(intersection),nếu những điểm giao nhau đó nhiều lên đến hàng trăm,hàng ngàn mà lại không thể dùng lệnh array được thì copy mất khá nhiều thời gian.Em đang nghĩ đến 1 lisp có thể hỗ trợ công việc này. Hiện tại em đang tìm lisp có chức năng dạng này.Bác nào biết thì chỉ em với!Xin cảm ơn nhiều...Em chưa biết gì về autolisp nên không tự viết được.Chỉ có ý tưởng thế thôi. Hôm trước thấy bác ssg có cái lisp break đối tượng tại các điểm giao nhau. Mình tin rằng bác ấy có thể giúp bạn nhưng mình nghỉ bạn nên nói rỏ ra 1 tí: -Cái block bạn muốn chèn là như thế nào? cố định sẳn có (bạn phải upcái này lên hoặc cung cấp tên) -Hay là bạn muốn chỉ định block bằngcách nhập tên hoặc chon trực tiếp trên bản vẻ. 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
crazylisp 14 Báo cáo bài đăng Đã đăng Tháng 4 23, 2008 Tìm mãi rồi cũng thấy có chỗ nói về giao đối tượng: http://www.cadviet.com/forum/index.php?showtopic=1535 Lấy đoạn code mà bác Ssg và bác Hoành hướng dẫn ở đó, mô đi phê 1 chút là có ngay cái bạn cần. Lisp ChenGiao dưới đây sẽ chèn các block vào giao điểm các đối tượng. (defun c:ChenGiao () (setq TapChon (ssget) TenBlock (getstring "\nNhap ten block: ") ) (if (tblsearch "block" TenBlock) (progn (setq SoDoiTuong (sslength TapChon) cs1 0 ) (repeat SoDoiTuong (setq DoiTuong1 (ssname TapChon cs1) cs2 (+ cs1 1) ) (repeat (- SoDoiTuong cs1 1) (setq DoiTuong2 (ssname TapChon cs2) TapGiaoDiem (GiaoDT DoiTuong1 DoiTuong2) cs2 (+ cs2 1) ) (foreach Diem TapGiaoDiem (entmake (list (cons 0 "insert") (cons 2 TenBlock) (cons 10 Diem)) ) ) ) (setq cs1 (+ cs1 1)) ) ) (princ "Khong co ten block") ) ) (defun GiaoDT (ent1 ent2) (setq ob1 (vlax-ename->vla-object ent1) ob2 (vlax-ename->vla-object ent2) ) (setq g (vlax-variant-value (vla-IntersectWith ob1 ob2 acExtendNone) ) ) (if (/= (vlax-safearray-get-u-bound g 1) -1) (setq g (vlax-safearray->list g)) (setq g nil) ) (if g (progn (setq kq nil sd (fix (/ (length g) 3)) ) (repeat sd (setq kq (append kq (list (list (car g) (cadr g) (caddr g)))) g (cdddr g) ) ) kq ) nil ) ) 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
nguyentam0920 0 Báo cáo bài đăng Đã đăng Tháng 4 24, 2008 Hôm trước thấy bác ssg có cái lisp break đối tượng tại các điểm giao nhau. Mình tin rằng bác ấy có thể giúp bạn nhưng mình nghỉ bạn nên nói rỏ ra 1 tí:-Cái block bạn muốn chèn là như thế nào? cố định sẳn có (bạn phải upcái này lên hoặc cung cấp tên) -Hay là bạn muốn chỉ định block bằngcách nhập tên hoặc chon trực tiếp trên bản vẻ. Cảm ơn bạnđã quan tâm đến vấn đề của mình.Mình muốn chèn block bình thường thôi,có tên bất kỳ do trong lúc làm việc mình tạo ra.Ví dụ đơn giản block đó chỉ là 1 hình ngôi sao nội tiếp đường tròn,Base point là tâm đường tròn.Nếu có đoạn lisp chỉ định Block bằng cách chọn trực tiếp trên bản vẽ thì thật là tuyệt vờ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
NguyenNgocSon 43 Báo cáo bài đăng Đã đăng Tháng 3 14, 2012 Em muốn chèn block tại các giao điểm như sau: Trong bản vẽ có 2 đường thẳng a,b giao nhau tại c (a, b khác nhau về layer) Bây giờ em muốn chèn block có tên:"BK" tại các giao điểm c? 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
hochoaivandot 111 Báo cáo bài đăng Đã đăng Tháng 3 14, 2012 Bạn thử cái này có đúng ý bạn không (defun LM:IntersectionsinSet ( ss / a b i j l ) (setq i (sslength ss)) (while (not (minusp (setq j (1- i) i (1- i)))) (setq a (vlax-ename->vla-object (ssname ss i))) (while (not (minusp (setq j (1- j)))) (setq b (vlax-ename->vla-object (ssname ss j)) l (cons (LM:GroupByNum (vlax-invoke a 'IntersectWith b acExtendNone) 3) l) ) ) ) (apply 'append l) ) (defun LM:GroupByNum ( l n / r) (if l (cons (reverse (repeat n (setq r (cons (car l) r) l (cdr l)) r)) (LM:GroupByNum l n) ) ) ) (defun dxf (code e) (cdr (assoc code (entget e)))) (defun C:ibi(/ os ss lst en pt item) (setq os (getvar "osmode")) (setvar "osmode" 0) (princ "\n Chon cac doi tuong giao nhau") (setq ss (ssget) lst (LM:IntersectionsinSet ss) en (car (entsel "\nChon Block")) pt (dxf 10 en) ) (foreach item lst (command "copy" en "" pt item) ) (setvar "osmode" os) ) 1 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
envirtech2002 9 Báo cáo bài đăng Đã đăng Tháng 8 9, 2013 Bạn thử cái này có đúng ý bạn không (defun LM:IntersectionsinSet ( ss / a b i j l ) (setq i (sslength ss)) (while (not (minusp (setq j (1- i) i (1- i)))) (setq a (vlax-ename->vla-object (ssname ss i))) (while (not (minusp (setq j (1- j)))) (setq b (vlax-ename->vla-object (ssname ss j)) l (cons (LM:GroupByNum (vlax-invoke a 'IntersectWith b acExtendNone) 3) l) ) ) ) (apply 'append l) ) (defun LM:GroupByNum ( l n / r) (if l (cons (reverse (repeat n (setq r (cons (car l) r) l (cdr l)) r)) (LM:GroupByNum l n) ) ) ) (defun dxf (code e) (cdr (assoc code (entget e)))) (defun C:ibi(/ os ss lst en pt item) (setq os (getvar "osmode")) (setvar "osmode" 0) (princ "\n Chon cac doi tuong giao nhau") (setq ss (ssget) lst (LM:IntersectionsinSet ss) en (car (entsel "\nChon Block")) pt (dxf 10 en) ) (foreach item lst (command "copy" en "" pt item) ) (setvar "osmode" os) ) Cái này hay quá bác ah, tks bác :D 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
trumlenmang 32 Báo cáo bài đăng Đã đăng Tháng 3 6, 2014 Bác hochoaivandot ơi, cái lisp bác đưa ra nó chỉ đúng ở WCS thôi. Em chuyển trục qua hệ mới nghiêng góc 45 nó sai mất 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
Tot77 508 Báo cáo bài đăng Đã đăng Tháng 3 8, 2014 Thì trước khi chạy lisp mình chuyển qua WCS, sau đó chuyển lại hệ trục khác. Viết líp đâu thể tính hết cho các trường hợp đặc biệt được. 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
lanvientkh 13 Báo cáo bài đăng Đã đăng Tháng 12 6, 2016 Bạn thử cái này có đúng ý bạn không (defun LM:IntersectionsinSet ( ss / a b i j l ) (setq i (sslength ss)) (while (not (minusp (setq j (1- i) i (1- i)))) (setq a (vlax-ename->vla-object (ssname ss i))) (while (not (minusp (setq j (1- j)))) (setq b (vlax-ename->vla-object (ssname ss j)) l (cons (LM:GroupByNum (vlax-invoke a 'IntersectWith b acExtendNone) 3) l) ) ) ) (apply 'append l))(defun LM:GroupByNum ( l n / r) (if l (cons (reverse (repeat n (setq r (cons (car l) r) l (cdr l)) r)) (LM:GroupByNum l n) ) ))(defun dxf (code e) (cdr (assoc code (entget e))))(defun C:ibi(/ os ss lst en pt item)(setq os (getvar "osmode"))(setvar "osmode" 0)(princ "\n Chon cac doi tuong giao nhau")(setq ss (ssget) lst (LM:IntersectionsinSet ss) en (car (entsel "\nChon Block")) pt (dxf 10 en))(foreach item lst (command "copy" en "" pt item))(setvar "osmode" os)) Bạn ơi, Trường hợp tại nhũng điểm giao này, có điểm thì giao quay lên, có điểm thì giao quay xuống mình phải xử lý thế nào vậy bạn, hiện nay lisp này sau khi dùng có đôi chỗ giao mình phải xoay block, cảm ơn bạn. 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 424 Báo cáo bài đăng Đã đăng Tháng 12 6, 2016 Bạn ơi, Trường hợp tại nhũng điểm giao này, có điểm thì giao quay lên, có điểm thì giao quay xuống mình phải xử lý thế nào vậy bạn, hiện nay lisp này sau khi dùng có đôi chỗ giao mình phải xoay block, cảm ơn bạn. Giao quay lên / Giao quay xuống là thế nào? Giao là giao điểm, lisp này chỉ có 1 điểm duy nhất người ta cần biết là tọa độ của điểm giao chứ cần quan tâm gì đến quay lên với quay xuống. ??? 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
quocmanh04tt 638 Báo cáo bài đăng Đã đăng Tháng 12 6, 2016 Nó như thế này: 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
lanvientkh 13 Báo cáo bài đăng Đã đăng Tháng 12 6, 2016 Giao quay lên / Giao quay xuống là thế nào? Giao là giao điểm, lisp này chỉ có 1 điểm duy nhất người ta cần biết là tọa độ của điểm giao chứ cần quan tâm gì đến quay lên với quay xuống. ??? Chào bạn, tại điểm giao sẽ chèn block nhưng block là hình tròn hay hình vuông thi chèn tại điểm giao là giống nhau, nhưng khi block là một hình khác thì block sẽ quay theo nhiều hướng khác nhau, khi điểm giao bên trái, bên phải, bên trên, bên dưới..,cái hình minh họa thì giống như video của bạn quocmanh04tt đã thể hiện rồi đó 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
Danh Cong 424 Báo cáo bài đăng Đã đăng Tháng 12 6, 2016 Ah, block ko đối xứng. Hì, cụ tỉ thế nào thì bạn phải đưa bản vẽ lên mọi ng mới giúp dc chứ. : ) 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
lanvientkh 13 Báo cáo bài đăng Đã đăng Tháng 12 7, 2016 Ah, block ko đối xứng. Hì, cụ tỉ thế nào thì bạn phải đưa bản vẽ lên mọi ng mới giúp dc chứ. : ) Dear bạn, cảm ơn bạn đã quan tâm, mình ko up được bạn down theo link này vậy nhé. https://drive.google.com/file/d/0BylXnbMPZLENc3hYVEZRZ0ppRzg/view?usp=sharing 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
lanvientkh 13 Báo cáo bài đăng Đã đăng Tháng 12 8, 2016 Nó như thế này: quá pro bạn quocmanh04tt, hihi 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
saigonnew 0 Báo cáo bài đăng Đã đăng Tháng 2 12, 2017 Nó như thế này: chia sẽ nó đi bạn 1 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