proconeng86 7 Báo cáo bài đăng Đã đăng Tháng 5 27, 2014 Mình hay phải vẽ dầm và thống kê cốt đai dầm, theo mẫu của bên mình thì số lượng đai dầm đã nằm ngay trong dim đo khoảng cách dưới dầm (như file đính kèm), việc thống kê chỉ là cộng số lượng đai lại nhưng nếu dầm dài cũng rất mất công ngồi ấn máy tính hoặc gõ vào excel tính Nên mình nhờ các bạn viết hộ mình 1 lisp để có thể tính tổng các đai trong các dim được lựa chọn. nội dung lisp là: - gõ lệnh - đưa ra lựa chọn những dim cần tính đai - tính toán và đưa ra số lượng đai trên màn hình - kết thúc lệnh Mình cám ơn nhiều http://www.cadviet.com/upfiles/3/9928_yeu_cau_lisp_tinh_so_dai_trong_nhieu_khoang_dim.dwg 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
hiepttr 540 Báo cáo bài đăng Đã đăng Tháng 5 27, 2014 level lisp còn thấp cộng với thời gian hạn chế nên chỉ làm đc khung xương cho bạn Phần bẫy lỗi còn kém, bạn dùng tạm, có gì thắc mắc sẽ chỉnh sửa thêm ;; Lisp cong gia tri Dim, phuc vu tinh tong so cot dai theo y/c: ;;http://www.cadviet.com/forum/topic/102605-yeu-cau-lisp-tinh-tong-so-dai-trong-dim/ (defun c:SD (/ old i tong ent text_dim start end n) ;;sum dim (setq old (getvar "cmdecho")) (setvar "cmdecho" 0) (setq i 0 tong 0) (while (setq ent (nentsel "\n Pick dung vao text Dim: ")) (setq i (1+ i) text_dim (cdr(assoc 1 (entget (car ent)))) start (vl-string-search "[" text_dim) end (vl-string-search "%%C" text_dim) n (atoi (substr text_dim (+ 2 start) (- end start 1))) tong (+ n tong) ) ) (alert (strcat "Tong cong " (itoa i) " dim la: " (itoa tong) " dai")) (setvar "cmdecho" old) (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
proconeng86 7 Báo cáo bài đăng Đã đăng Tháng 5 27, 2014 level lisp còn thấp cộng với thời gian hạn chế nên chỉ làm đc khung xương cho bạn Phần bẫy lỗi còn kém, bạn dùng tạm, có gì thắc mắc sẽ chỉnh sửa thêm ;; Lisp cong gia tri Dim, phuc vu tinh tong so cot dai theo y/c: ;;http://www.cadviet.com/forum/topic/102605-yeu-cau-lisp-tinh-tong-so-dai-trong-dim/ (defun c:SD (/ old i tong ent text_dim start end n) ;;sum dim (setq old (getvar "cmdecho")) (setvar "cmdecho" 0) (setq i 0 tong 0) (while (setq ent (nentsel "\n Pick dung vao text Dim: ")) (setq i (1+ i) text_dim (cdr(assoc 1 (entget (car ent)))) start (vl-string-search "[" text_dim) end (vl-string-search "%%C" text_dim) n (atoi (substr text_dim (+ 2 start) (- end start 1))) tong (+ n tong) ) ) (alert (strcat "Tong cong " (itoa i) " dim la: " (itoa tong) " dai")) (setvar "cmdecho" old) (princ) ) Cám ơn bạn hiepttr đã giúp đỡ Lisp này đúng với yêu cầu của mình rồi, mình đã dùng thử nhưng vẫn còn 1 số hạn chế sau: - phải click đúng vào phần text của dim thì mới dùng được, click vào các đường trên dim là không dùng được - hiện tại đang phải click vào từng dim nên khá là lâu nếu dầm nhiều nhịp, ví dụ như mình có 1 dầm có 10 nhịp, sẽ có 30 khoảng bố trí đai như vậy phải click 30 lần mới tính được, khá mất thời gian. bạn có thể sửa lại hộ mình là có thể quét để chọn nhiều dim thay vì click vào từng dim được không Mong bạn sửa giúp mình, mình cám ơn nhiề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
Doan Van Ha 3209 Báo cáo bài đăng Đã đăng Tháng 5 27, 2014 cmdecho để làm gì hiepttr ơ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
hiepttr 540 Báo cáo bài đăng Đã đăng Tháng 5 28, 2014 cmdecho để làm gì hiepttr ơi? Là do em save as từ 1 file khác tương tự nên quên xóa :D :D :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
hiepttr 540 Báo cáo bài đăng Đã đăng Tháng 5 28, 2014 Bạn dùng tạm cái này Chú ý: đang còn hạn chế, Khi chọn nhầm các loại Dim style không phù hợp thì lisp lỗi ko chạy :D :D :D ;; Lisp cong gia tri Dim, phuc vu tinh tong so cot dai theo y/c: ;;http://www.cadviet.com/forum/topic/102605-yeu-cau-lisp-tinh-tong-so-dai-trong-dim/ (defun c:SD (/ i tong ss ent info ds ds_name hs text_dim start end n) ;;sum dim (setq i -1 tong 0) (prompt "\n Chon Dim can tinh tong: ") (setq ss (ssget '((0 . "DIMENSION")))) (while (and ss (< i (1- (sslength ss)))) (setq ent (ssname ss (setq i (1+ i))) info (entget ent) ds (cdr (assoc 3 info)) ds_name (tblobjname "dimstyle" ds) hs (cdr (assoc 143 (entget ds_name))) ) (cond ((= (cdr(assoc 1 info)) "") (setq n (fix (+ 0.5 (* (cdr(assoc 42 info)) hs))))) (t (setq text_dim (cdr(assoc 1 info)) start (vl-string-search "[" text_dim) end (vl-string-search "%%C" text_dim) n (atoi (substr text_dim (+ 2 start) (- end start 1))) ) ) ) (setq tong (+ n tong)) ) (alert (strcat "Tong cong " (itoa (1+ i)) " dim la: " (itoa tong) " dai")) (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
phamthanhbinh 3147 Báo cáo bài đăng Đã đăng Tháng 5 28, 2014 Cám ơn bạn hiepttr đã giúp đỡ Lisp này đúng với yêu cầu của mình rồi, mình đã dùng thử nhưng vẫn còn 1 số hạn chế sau: - phải click đúng vào phần text của dim thì mới dùng được, click vào các đường trên dim là không dùng được - hiện tại đang phải click vào từng dim nên khá là lâu nếu dầm nhiều nhịp, ví dụ như mình có 1 dầm có 10 nhịp, sẽ có 30 khoảng bố trí đai như vậy phải click 30 lần mới tính được, khá mất thời gian. bạn có thể sửa lại hộ mình là có thể quét để chọn nhiều dim thay vì click vào từng dim được không Mong bạn sửa giúp mình, mình cám ơn nhiều Hề hề hề, Dùng thử cái này xem có ngứa ngáy hay nổi mụn chỗ nào không nhé. (defun c:tida (/ ssd sd ed kt ts n b ) (setq ssd (acet-ss-to-list (ssget (list (cons 0 "dimension") (cons 3 "*00)")))) sd 0 ) (foreach d ssd (setq ed (entget d) kt (cdr (assoc 42 ed)) ts (cdr (assoc 3 ed)) n (strlen ts) b (atoi (substr ts (- n 3) 3)) sd (+ sd (fix (/ kt b)) 1) ) ) (alert (strcat "\n Tong so dai can dung la: " (rtos sd 2 0) " dai " (chr 216) " 6")) (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
proconeng86 7 Báo cáo bài đăng Đã đăng Tháng 5 28, 2014 Bạn dùng tạm cái này Chú ý: đang còn hạn chế, Khi chọn nhầm các loại Dim style không phù hợp thì lisp lỗi ko chạy :D :D :D ;; Lisp cong gia tri Dim, phuc vu tinh tong so cot dai theo y/c: ;;http://www.cadviet.com/forum/topic/102605-yeu-cau-lisp-tinh-tong-so-dai-trong-dim/ (defun c:SD (/ i tong ss ent info ds ds_name hs text_dim start end n) ;;sum dim (setq i -1 tong 0) (prompt "\n Chon Dim can tinh tong: ") (setq ss (ssget '((0 . "DIMENSION")))) (while (and ss (< i (1- (sslength ss)))) (setq ent (ssname ss (setq i (1+ i))) info (entget ent) ds (cdr (assoc 3 info)) ds_name (tblobjname "dimstyle" ds) hs (cdr (assoc 143 (entget ds_name))) ) (cond ((= (cdr(assoc 1 info)) "") (setq n (fix (+ 0.5 (* (cdr(assoc 42 info)) hs))))) (t (setq text_dim (cdr(assoc 1 info)) start (vl-string-search "[" text_dim) end (vl-string-search "%%C" text_dim) n (atoi (substr text_dim (+ 2 start) (- end start 1))) ) ) ) (setq tong (+ n tong)) ) (alert (strcat "Tong cong " (itoa (1+ i)) " dim la: " (itoa tong) " dai")) (princ) ) Đúng là khi chọn nhầm dim khác bị lỗi, ko chạy được nhưng cám ơn bạn đã nhiệt tình giúp mình 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
proconeng86 7 Báo cáo bài đăng Đã đăng Tháng 5 28, 2014 Hề hề hề, Dùng thử cái này xem có ngứa ngáy hay nổi mụn chỗ nào không nhé. (defun c:tida (/ ssd sd ed kt ts n b ) (setq ssd (acet-ss-to-list (ssget (list (cons 0 "dimension") (cons 3 "*00)")))) sd 0 ) (foreach d ssd (setq ed (entget d) kt (cdr (assoc 42 ed)) ts (cdr (assoc 3 ed)) n (strlen ts) b (atoi (substr ts (- n 3) 3)) sd (+ sd (fix (/ kt b)) 1) ) ) (alert (strcat "\n Tong so dai can dung la: " (rtos sd 2 0) " dai " (chr 216) " 6")) (princ) ) Lisp của bạn Phamthanhbinh không bị lỗi khi chọn cả dim không ghi đai tuy nhiên lại mặc định là đai phi6 Một dầm có nhiều nhịp có khi có nhiều loại đai đường kính khác nhau mà như file đính kèm của mình có 2 loại đai phi6 và phi10, bạn giúp mình chỉnh lại là đưa ra tổng số lượng đai của từng loại nhé Cám ơn bạn nhiều http://www.cadviet.com/upfiles/3/9928_yeu_cau_lisp_tinh_so_dai_trong_nhieu_khoang_dim_1.dwg 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
hiepttr 540 Báo cáo bài đăng Đã đăng Tháng 5 28, 2014 Bạn dùng tạm cái này Chú ý: đang còn hạn chế, Khi chọn nhầm các loại Dim style không phù hợp thì lisp lỗi ko chạy :D :D :D ;; Lisp cong gia tri Dim, phuc vu tinh tong so cot dai theo y/c: ;;http://www.cadviet.com/forum/topic/102605-yeu-cau-lisp-tinh-tong-so-dai-trong-dim/ (defun c:SD (/ i tong ss ent info ds ds_name hs text_dim start end n) ;;sum dim (setq i -1 tong 0) (prompt "\n Chon Dim can tinh tong: ") (setq ss (ssget '((0 . "DIMENSION")))) (while (and ss (< i (1- (sslength ss)))) (setq ent (ssname ss (setq i (1+ i))) info (entget ent) ds (cdr (assoc 3 info)) ds_name (tblobjname "dimstyle" ds) hs (cdr (assoc 143 (entget ds_name))) ) (cond ((= (cdr(assoc 1 info)) "") (setq n (fix (+ 0.5 (* (cdr(assoc 42 info)) hs))))) (t (setq text_dim (cdr(assoc 1 info)) start (vl-string-search "[" text_dim) end (vl-string-search "%%C" text_dim) n (atoi (substr text_dim (+ 2 start) (- end start 1))) ) ) ) (setq tong (+ n tong)) ) (alert (strcat "Tong cong " (itoa (1+ i)) " dim la: " (itoa tong) " dai")) (princ) ) Đúng là khi chọn nhầm dim khác bị lỗi, ko chạy được nhưng cám ơn bạn đã nhiệt tình giúp mình nhé Mình "cố tình" làm thế vì BV mẫu bạn đưa ra & những thông tin bạn cấp ko đủ để mình lọc Dim style Nếu muốn chạy trơn tru nữa thì bạn cần cung cấp thông tin đầy đủ từ đầu :D Nếu chấp nhận bỏ qua dim style ko phù hợp (ko có hs chuyển đổi đơn vị) thì dùng cái này ;; Lisp cong gia tri Dim, phuc vu tinh tong so cot dai theo y/c: ;;http://www.cadviet.com/forum/topic/102605-yeu-cau-lisp-tinh-tong-so-dai-trong-dim/ (defun c:SD (/ i tong ss ent info ds ds_name hs text_dim start end n) ;;sum dim (setq i -1 j 0 tong 0) (prompt "\n Chon Dim can tinh tong: ") (setq ss (ssget '((0 . "DIMENSION")))) (while (and ss (< i (1- (sslength ss)))) (setq ent (ssname ss (setq i (1+ i))) info (entget ent) ds (cdr (assoc 3 info)) ds_name (tblobjname "dimstyle" ds) hs (cdr (assoc 143 (entget ds_name))) ) (cond ((null hs) (setq n 0 j (1+ j))) ((= (cdr(assoc 1 info)) "") (setq n (fix (+ 0.5 (* (cdr(assoc 42 info)) hs))))) (t (setq text_dim (cdr(assoc 1 info)) start (vl-string-search "[" text_dim) end (vl-string-search "%%C" text_dim) n (atoi (substr text_dim (+ 2 start) (- end start 1))) ) ) ) (setq tong (+ n tong)) ) (alert (strcat "Tong cong " (itoa (1+ (- i j))) " dim la: " (itoa tong) " dai")) (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
proconeng86 7 Báo cáo bài đăng Đã đăng Tháng 5 28, 2014 Mình "cố tình" làm thế vì BV mẫu bạn đưa ra & những thông tin bạn cấp ko đủ để mình lọc Dim style Nếu muốn chạy trơn tru nữa thì bạn cần cung cấp thông tin đầy đủ từ đầu :D Nếu chấp nhận bỏ qua dim style ko phù hợp (ko có hs chuyển đổi đơn vị) thì dùng cái này ;; Lisp cong gia tri Dim, phuc vu tinh tong so cot dai theo y/c: ;;http://www.cadviet.com/forum/topic/102605-yeu-cau-lisp-tinh-tong-so-dai-trong-dim/ (defun c:SD (/ i tong ss ent info ds ds_name hs text_dim start end n) ;;sum dim (setq i -1 j 0 tong 0) (prompt "\n Chon Dim can tinh tong: ") (setq ss (ssget '((0 . "DIMENSION")))) (while (and ss (< i (1- (sslength ss)))) (setq ent (ssname ss (setq i (1+ i))) info (entget ent) ds (cdr (assoc 3 info)) ds_name (tblobjname "dimstyle" ds) hs (cdr (assoc 143 (entget ds_name))) ) (cond ((null hs) (setq n 0 j (1+ j))) ((= (cdr(assoc 1 info)) "") (setq n (fix (+ 0.5 (* (cdr(assoc 42 info)) hs))))) (t (setq text_dim (cdr(assoc 1 info)) start (vl-string-search "[" text_dim) end (vl-string-search "%%C" text_dim) n (atoi (substr text_dim (+ 2 start) (- end start 1))) ) ) ) (setq tong (+ n tong)) ) (alert (strcat "Tong cong " (itoa (1+ (- i j))) " dim la: " (itoa tong) " dai")) (princ) ) Lisp này hết bị lỗi khi chọn dim không có đai rồi nhưng bạn sửa thêm cho mình là nếu có nhiều loại đai khác nhau (ví dụ trong file đính kèm có 2 loại đai phi6 và phi10) thì tính tổng từng loại đường kính và đưa ra bảng thông báo Mình cám ơn nhiều http://www.cadviet.com/upfiles/3/9928_yeu_cau_lisp_tinh_so_dai_trong_nhieu_khoang_dim_2.dwg 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 3147 Báo cáo bài đăng Đã đăng Tháng 5 28, 2014 Lisp này hết bị lỗi khi chọn dim không có đai rồi nhưng bạn sửa thêm cho mình là nếu có nhiều loại đai khác nhau (ví dụ trong file đính kèm có 2 loại đai phi6 và phi10) thì tính tổng từng loại đường kính và đưa ra bảng thông báo Mình cám ơn nhiều http://www.cadviet.com/upfiles/3/9928_yeu_cau_lisp_tinh_so_dai_trong_nhieu_khoang_dim_2.dwg Hề hề hề, Bạn nên rút kinh nghiệm khi đặt yêu cầu viết lisp. nên suy nghĩ thấu đáo về cái mình cần và đưa ra đầy đủ các bản vẽ thể hiện đúng cái mình cần. Đừng làm theo kiểu mỗi lúc lại són ra một yêu cầu thêm mới. Bản vẽ lần trước bạn gửi chỉ có duy nhất một loai đường kinh đai thôi, hoàn toàn không có loại đai thứ hai nào. Bởi vậy mình mới để mặc định trong thông báo là đai phi 6. (bằng chứng vẫn còn đó) Đây là lisp đã sửa theo yêu cầu mới và hy vọng bạn không đẻ thêm yêu cầu mới cho cái lisp này. Nếu vẫn còn thì bạn sẽ phải đợi lâu đấy, bởi mình hết hứng bổ sung rồi. (defun c:tida (/ ssd sd ed kt ts n b m sdl dkl ld) (vl-load-com) (setq ssd (acet-ss-to-list (ssget (list (cons 0 "dimension") (cons 3 "*00)")))) dkl (list) sd 0 ) (foreach d ssd (setq ed (entget d) kt (cdr (assoc 42 ed)) ts (cdr (assoc 3 ed)) n (vl-string-search "d" ts) m (vl-string-search "a" ts) b (atoi (substr ts (+ 2 m) 3)) dk (substr ts (+ 2 n) (- m n 1)) sdl (if (>= (- (/ kt b) (fix (/ kt b))) 0.5) (1+ (fix (/ kt b))) (fix (/ kt b))) dkl (append dkl (list (list dk sdl))) ) ) (setq dkl (vl-sort dkl '(lambda (x y) (<= (atoi (car x)) (atoi (car y)))))) (while dkl (setq sd 0 ld (caar dkl)) (foreach lis dkl (if (= (car lis) ld) (progn (setq sd (+ sd (cadr lis)) dkl (vl-remove lis dkl) ) ) ) ) (alert (strcat "\n Tong so dai " (chr 216) ld " can dung la: " (rtos sd 2 0) " dai " )) ) (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
proconeng86 7 Báo cáo bài đăng Đã đăng Tháng 5 29, 2014 Hề hề hề, Bạn nên rút kinh nghiệm khi đặt yêu cầu viết lisp. nên suy nghĩ thấu đáo về cái mình cần và đưa ra đầy đủ các bản vẽ thể hiện đúng cái mình cần. Đừng làm theo kiểu mỗi lúc lại són ra một yêu cầu thêm mới. Bản vẽ lần trước bạn gửi chỉ có duy nhất một loai đường kinh đai thôi, hoàn toàn không có loại đai thứ hai nào. Bởi vậy mình mới để mặc định trong thông báo là đai phi 6. (bằng chứng vẫn còn đó) Đây là lisp đã sửa theo yêu cầu mới và hy vọng bạn không đẻ thêm yêu cầu mới cho cái lisp này. Nếu vẫn còn thì bạn sẽ phải đợi lâu đấy, bởi mình hết hứng bổ sung rồi. (defun c:tida (/ ssd sd ed kt ts n b m sdl dkl ld) (vl-load-com) (setq ssd (acet-ss-to-list (ssget (list (cons 0 "dimension") (cons 3 "*00)")))) dkl (list) sd 0 ) (foreach d ssd (setq ed (entget d) kt (cdr (assoc 42 ed)) ts (cdr (assoc 3 ed)) n (vl-string-search "d" ts) m (vl-string-search "a" ts) b (atoi (substr ts (+ 2 m) 3)) dk (substr ts (+ 2 n) (- m n 1)) sdl (if (>= (- (/ kt b) (fix (/ kt b))) 0.5) (1+ (fix (/ kt b))) (fix (/ kt b))) dkl (append dkl (list (list dk sdl))) ) ) (setq dkl (vl-sort dkl '(lambda (x y) (<= (atoi (car x)) (atoi (car y)))))) (while dkl (setq sd 0 ld (caar dkl)) (foreach lis dkl (if (= (car lis) ld) (progn (setq sd (+ sd (cadr lis)) dkl (vl-remove lis dkl) ) ) ) ) (alert (strcat "\n Tong so dai " (chr 216) ld " can dung la: " (rtos sd 2 0) " dai " )) ) (princ) ) Xin lỗi bạn nhé vì lúc đầu mình cũng chưa nghĩ đc hết, khi làm rồi mới biết dc và nảy sinh ra, lần sau mình sẽ rút kinh nghiệm. Lisp này là ngon rồi, mình cám ơn nhiều nha 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
proconeng86 7 Báo cáo bài đăng Đã đăng Tháng 6 8, 2014 @phamthanhbinh Xin lỗi bạn trước nhé, giờ làm lại phát sinh thêm loại a150,a250 nữa, lisp trên lại không dùng được với loai này, bạn có thể sửa lại giúp mình cái được không. Mình cám ơn nhiều Tính số lượng đai thì mình dùng hệ số Multipliner for alt unit trong thẻ Alternate units trong định nghĩa dim. Số đai sẽ bằng chiều dài dim nhân với hệ số Multipliner for alt unit nên mình nghĩ bạn viết lisp với công thức trên thì có thế áp dụng được cho mọi kiểu dim bất kì luôn Bạn cho ý kiến nhé. Chân thành cám ơn http://www.cadviet.com/upfiles/3/9928_yeu_cau_lisp_tinh_so_dai_trong_nhieu_khoang_dim_4.dwg 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 3915 Báo cáo bài đăng Đã đăng Tháng 6 8, 2014 @phamthanhbinh Xin lỗi bạn trước nhé, giờ làm lại phát sinh thêm loại a150,a250 nữa, lisp trên lại không dùng được với loai này, bạn có thể sửa lại giúp mình cái được không. Mình cám ơn nhiều Tính số lượng đai thì mình dùng hệ số Multipliner for alt unit trong thẻ Alternate units trong định nghĩa dim. Số đai sẽ bằng chiều dài dim nhân với hệ số Multipliner for alt unit nên mình nghĩ bạn viết lisp với công thức trên thì có thế áp dụng được cho mọi kiểu dim bất kì luôn Bạn cho ý kiến nhé. Chân thành cám ơn http://www.cadviet.com/upfiles/3/9928_yeu_cau_lisp_tinh_so_dai_trong_nhieu_khoang_dim_4.dwg Góp ý cho bạn đây: - Có quá nhiều kiểu dimstyle. Mỗi loại khoảng cách đai là 1 kiểu dimstyle là không chuyên nghiệp và có thể gây ra sự nhầm lẫn cho chính bạn và người sử dụng bản vẽ của bạn. Trong bản vẽ Nên sử dụng kiểu dimstyle thường dung mà 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
Tot77 508 Báo cáo bài đăng Đã đăng Tháng 6 8, 2014 Bạn thử dùng cái này, nó chẳng phân biệt kiểu dim, chỉ phân biệt tẽt dim thôi. (defun c:tmp() (defun GeD(v / l en) (setq l nil) (vlax-for item (vla-item (vla-get-blocks (vla-get-ActiveDocument (vlax-get-acad-object))) (cdr (assoc 2 (entget v)))) (if (= "MTEXT" (cdr (assoc 0 (entget (setq en (vlax-vla-object->ename item)))))) (setq l en)) ) l ) (Prompt "\nChon Dim:") (setq l nil) (foreach x (acet-ss-to-list (ssget '((0 . "DIMENSION")))) (setq txt (cdr (assoc 1 (entget (Ged x)))) sl (atoi (substr txt (+ 2 (vl-string-search "[" txt)) (- (vl-string-search "%" txt) (vl-string-search "[" txt) 1))) fi (atoi (substr txt (+ 4 (vl-string-search "%" txt)) (- (vl-string-search "a" txt) (vl-string-search "%" txt) 3))) l (if (not (assoc fi l)) (cons (cons fi sl) l) (subst (cons fi (+ sl (cdr (assoc fi l)))) (assoc fi l) l))) ) (foreach x l (princ (strcat "\n" (itoa (cdr x)) (chr 216) (itoa (car x))))) (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
proconeng86 7 Báo cáo bài đăng Đã đăng Tháng 6 8, 2014 Bạn thử dùng cái này, nó chẳng phân biệt kiểu dim, chỉ phân biệt tẽt dim thôi. (defun c:tmp() (defun GeD(v / l en) (setq l nil) (vlax-for item (vla-item (vla-get-blocks (vla-get-ActiveDocument (vlax-get-acad-object))) (cdr (assoc 2 (entget v)))) (if (= "MTEXT" (cdr (assoc 0 (entget (setq en (vlax-vla-object->ename item)))))) (setq l en)) ) l ) (Prompt "\nChon Dim:") (setq l nil) (foreach x (acet-ss-to-list (ssget '((0 . "DIMENSION")))) (setq txt (cdr (assoc 1 (entget (Ged x)))) sl (atoi (substr txt (+ 2 (vl-string-search "[" txt)) (- (vl-string-search "%" txt) (vl-string-search "[" txt) 1))) fi (atoi (substr txt (+ 4 (vl-string-search "%" txt)) (- (vl-string-search "a" txt) (vl-string-search "%" txt) 3))) l (if (not (assoc fi l)) (cons (cons fi sl) l) (subst (cons fi (+ sl (cdr (assoc fi l)))) (assoc fi l) l))) ) (foreach x l (princ (strcat "\n" (itoa (cdr x)) (chr 216) (itoa (car x))))) (princ) ) Lisp này rất tốt đó,đúng ý mình rồi tuy nhiên có 1 điều là nó đưa ra số đai ở dòng command, mà dòng này thì mình hay để nó bé nhất có thể để cho màn hình vẽ được lớn hơn. Bạn Tot77 có thể sửa giúp mình lại là đưa ra bảng thông báo trên màn hình như lisp của bạn phamthanhbinh được không. Lisp của bạn phamthanhbinh có bao nhiêu loại đường kính đai thì xuất hiện bấy nhiêu bảng, bạn sửa lại chỉ xuất hiện 1 bảng cho tất cả các loại đai chọn nhé (như thông báo trong dòng command của bạn đó nhưng là bảng hiện trên màn hình) Mình cám ơn nhiề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
Tot77 508 Báo cáo bài đăng Đã đăng Tháng 6 8, 2014 Sửa thêm: (defun c:tmp() (defun GeD(v / l en) (setq l nil) (vlax-for item (vla-item (vla-get-blocks (vla-get-ActiveDocument (vlax-get-acad-object))) (cdr (assoc 2 (entget v)))) (if (= "MTEXT" (cdr (assoc 0 (entget (setq en (vlax-vla-object->ename item)))))) (setq l en)) ) l ) (Prompt "\nChon Dim:") (setq l nil) (foreach x (acet-ss-to-list (ssget '((0 . "DIMENSION")))) (setq txt (cdr (assoc 1 (entget (Ged x)))) sl (atoi (substr txt (+ 2 (vl-string-search "[" txt)) (- (vl-string-search "%" txt) (vl-string-search "[" txt) 1))) fi (atoi (substr txt (+ 4 (vl-string-search "%" txt)) (- (vl-string-search "a" txt) (vl-string-search "%" txt) 3))) l (if (not (assoc fi l)) (cons (cons fi sl) l) (subst (cons fi (+ sl (cdr (assoc fi l)))) (assoc fi l) l))) ) (setq st "") (foreach x l (setq st (strcat st "\n" (itoa (cdr x)) (chr 216) (itoa (car x))))) (alert st) (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
proconeng86 7 Báo cáo bài đăng Đã đăng Tháng 6 8, 2014 Sửa thêm: (defun c:tmp() (defun GeD(v / l en) (setq l nil) (vlax-for item (vla-item (vla-get-blocks (vla-get-ActiveDocument (vlax-get-acad-object))) (cdr (assoc 2 (entget v)))) (if (= "MTEXT" (cdr (assoc 0 (entget (setq en (vlax-vla-object->ename item)))))) (setq l en)) ) l ) (Prompt "\nChon Dim:") (setq l nil) (foreach x (acet-ss-to-list (ssget '((0 . "DIMENSION")))) (setq txt (cdr (assoc 1 (entget (Ged x)))) sl (atoi (substr txt (+ 2 (vl-string-search "[" txt)) (- (vl-string-search "%" txt) (vl-string-search "[" txt) 1))) fi (atoi (substr txt (+ 4 (vl-string-search "%" txt)) (- (vl-string-search "a" txt) (vl-string-search "%" txt) 3))) l (if (not (assoc fi l)) (cons (cons fi sl) l) (subst (cons fi (+ sl (cdr (assoc fi l)))) (assoc fi l) l))) ) (setq st "") (foreach x l (setq st (strcat st "\n" (itoa (cdr x)) (chr 216) (itoa (car x))))) (alert st) (princ) ) Lisp này là chuẩn rồi. Cám ơn bạn Tot77 nhiều 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
proconeng86 7 Báo cáo bài đăng Đã đăng Tháng 6 8, 2014 Sửa thêm: (defun c:tmp() (defun GeD(v / l en) (setq l nil) (vlax-for item (vla-item (vla-get-blocks (vla-get-ActiveDocument (vlax-get-acad-object))) (cdr (assoc 2 (entget v)))) (if (= "MTEXT" (cdr (assoc 0 (entget (setq en (vlax-vla-object->ename item)))))) (setq l en)) ) l ) (Prompt "\nChon Dim:") (setq l nil) (foreach x (acet-ss-to-list (ssget '((0 . "DIMENSION")))) (setq txt (cdr (assoc 1 (entget (Ged x)))) sl (atoi (substr txt (+ 2 (vl-string-search "[" txt)) (- (vl-string-search "%" txt) (vl-string-search "[" txt) 1))) fi (atoi (substr txt (+ 4 (vl-string-search "%" txt)) (- (vl-string-search "a" txt) (vl-string-search "%" txt) 3))) l (if (not (assoc fi l)) (cons (cons fi sl) l) (subst (cons fi (+ sl (cdr (assoc fi l)))) (assoc fi l) l))) ) (setq st "") (foreach x l (setq st (strcat st "\n" (itoa (cdr x)) (chr 216) (itoa (car x))))) (alert st) (princ) ) Lisp của bạn trước mình chỉ thử với dim bố trí đai rất là ok, tuy nhiên mình vừa dùng lisp của bạn để làm việc, khi chọn lẫn cả những dim thường (dim không bố trí đai) thì lisp của bạn lại bị lỗi gì đó, không tính đai được. Lỗi này trong lisp của bạn phamthanhbinh đã sửa được rồi đó. Bạn sửa lại giúp mình nốt lần này nhé. Mình cám ơn nhiề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
Tot77 508 Báo cáo bài đăng Đã đăng Tháng 6 8, 2014 Không nghĩ bạn "quơ" luôn dim không đai. (defun c:tmp() (defun GeD(v / l en) (setq l nil) (vlax-for item (vla-item (vla-get-blocks (vla-get-ActiveDocument (vlax-get-acad-object))) (cdr (assoc 2 (entget v)))) (if (= "MTEXT" (cdr (assoc 0 (entget (setq en (vlax-vla-object->ename item)))))) (setq l en)) ) l ) (Prompt "\nChon Dim:") (setq l nil) (foreach x (acet-ss-to-list (ssget '((0 . "DIMENSION")))) (setq txt (cdr (assoc 1 (entget (Ged x))))) (if (and (vl-string-search "[" txt) (vl-string-search "%" txt) (vl-string-search "a" txt)) (setq sl (atoi (substr txt (+ 2 (vl-string-search "[" txt)) (- (vl-string-search "%" txt) (vl-string-search "[" txt) 1))) fi (atoi (substr txt (+ 4 (vl-string-search "%" txt)) (- (vl-string-search "a" txt) (vl-string-search "%" txt) 3))) l (if (not (assoc fi l)) (cons (cons fi sl) l) (subst (cons fi (+ sl (cdr (assoc fi l)))) (assoc fi l) l)))) ) (if l (progn (setq st "") (foreach x l (setq st (strcat st "\n" (itoa (cdr x)) (chr 216) (itoa (car x))))) (alert st))) (princ) ) 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
proconeng86 7 Báo cáo bài đăng Đã đăng Tháng 6 8, 2014 Không nghĩ bạn "quơ" luôn dim không đai. (defun c:tmp() (defun GeD(v / l en) (setq l nil) (vlax-for item (vla-item (vla-get-blocks (vla-get-ActiveDocument (vlax-get-acad-object))) (cdr (assoc 2 (entget v)))) (if (= "MTEXT" (cdr (assoc 0 (entget (setq en (vlax-vla-object->ename item)))))) (setq l en)) ) l ) (Prompt "\nChon Dim:") (setq l nil) (foreach x (acet-ss-to-list (ssget '((0 . "DIMENSION")))) (setq txt (cdr (assoc 1 (entget (Ged x))))) (if (and (vl-string-search "[" txt) (vl-string-search "%" txt) (vl-string-search "a" txt)) (setq sl (atoi (substr txt (+ 2 (vl-string-search "[" txt)) (- (vl-string-search "%" txt) (vl-string-search "[" txt) 1))) fi (atoi (substr txt (+ 4 (vl-string-search "%" txt)) (- (vl-string-search "a" txt) (vl-string-search "%" txt) 3))) l (if (not (assoc fi l)) (cons (cons fi sl) l) (subst (cons fi (+ sl (cdr (assoc fi l)))) (assoc fi l) l)))) ) (if l (progn (setq st "") (foreach x l (setq st (strcat st "\n" (itoa (cdr x)) (chr 216) (itoa (car x))))) (alert st))) (princ) ) Tại vì trong đoạn cột thì không có đai, nếu chọn từng thằng thì tốn nhiều thời gian mà Lisp này là ok rồi Cám ơn bạn Tot77 nhiều nhé, bạn nhiệt tình thật đó. khi nào có dịp ra hà nội pm mình nhé, ae giao lưu nha :) :) :) 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
caychuoixd 0 Báo cáo bài đăng Đã đăng Tháng 4 23, 2015 Của em sao ấy dùng ko được, các bác xem lỗi do gì thế ạ, thanks http://www.cadviet.com/upfiles/4/49751_dai_dam.dwg 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
ptd1987 5 Báo cáo bài đăng Đã đăng Tháng 4 25, 2015 em xài cad 2007 32 bit load lisp lên, cad ko hiểu dc lisp, làm sao mà xài đây các bác 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
cunconlangthang1088 1 Báo cáo bài đăng Đã đăng Tháng 5 31, 2015 các bác ơi em load lisp tmp ở phía trên toàn báo lỗi ; error: syntax error? 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