nguyenkhoadung98 2 Báo cáo bài đăng Đã đăng Tháng 4 23, 2009 Mình đã thử với tất cả các đường trong các bản vẽ của bạn thì đều ổn cả.Bạn thử lại lisp cũ cho đường pline, nếu ổn thì sửa thủ công theo cách này. Nếu Bạn copy vào 1 file mới thì Lisp mới chỉ sửa 4 chỗ sau: Dòng 3: "T2/l1-" => "T1/l1-" Dòng 38: (setq d0 (+ d0 d) ) => (setq d0 (+ d0 d) i (fix (abs (/ len d)))) Dòng 39 : (while (setq p1 (vlax-curve-getpointatdist plObj d0)) => (while (and (> i 0) (setq p1 (vlax-curve-getpointatdist plObj d0))) Dòng 46: (setq d0 (+ d0 d) p0 p1 a0 a1) => (setq d0 (+ d0 d) p0 p1 a0 a1 i (1- i)) Như vậy thì nếu việc thoát luôn là hơi vô lý vì chương trình chưa chạy đến chỗ sửa Nếu còn lỗi thì gửi bản vẽ vào ndtnve@yahoo.com Cảm ơn bạn NDTNV, bạn BÌNH, bạn TUE, vanhờ các bạn mình đã giải quyết đuợc vấn đề. chúc các bạn và mọi nguời trên cadviet mạnh khoẻ và hạnh phú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
q288 166 Báo cáo bài đăng Đã đăng Tháng 4 23, 2009 có đồng chí nào giúp mình được cái này không :mình muốn tạo một cái lisp sao cho khi quét các đối tượng line, nếu 2 line vuông góc nhau thì insert block A như hình vẽ (đương nhiên trục block sẽ theo 2 trục của line tạo ra, nếu có 2 line vuông góc nhưng dư ra thì insert block B như hình vẽ. cám ơn các bác nhiều. mình nghĩ cái này hơn khó đấy. Mình tạm nghĩ ra cái lisp này, mới thử sơ sơ thôi nhưng thấy chạy cũng đc. Mình đặt tên block là 1 và 2 theo file đính kèm. Sau khi nhập lệnh ins, chọn các line, nó sẽ tự động chèn block. Chú ý là các block có điểm insert và chiều như hình vẽ. http://myfreefilehosting.com/f/6c60799b99_0.03MB (defun vg(p / ss1 v1 v2 pt1 pt2 pt3 pt4 a1 a2 a) (setq ss1 (ssget "c" (polar p (* -0.25 pi) 1) (polar p (* 0.75 pi) 1) '((0 . "LINE")))) (if (= (sslength ss1) 2) (setq v1 (ssname ss1 0) v2 (ssname ss1 1) pt1 (cdr (assoc 10 (entget v1))) pt2 (cdr (assoc 11 (entget v1))) pt3 (cdr (assoc 10 (entget v2))) pt4 (cdr (assoc 11 (entget v2))) a1 (angle pt1 pt2) a2 (angle pt3 pt4) a (abs (- a2 a1)) a (if (> a pi) (- a pi) a)) ) (if (= (sslength ss1) 2) (list (equal a (* 0.5 pi) 0.001) (or (equal pt1 pt3 0.001) (equal pt1 pt4 0.001) (equal pt2 pt3 0.001) (equal pt2 pt4 0.001)) (* a1 (/ 180 pi))) (list nil nil nil)) ) ;;;; (defun c:ins() (prompt "\nChon cac Line:") (setq ss (ssget '((0 . "LINE"))) L nil) (while (and ss (> (sslength ss) 0)) (setq v (ssname ss 0) p1 (cdr (assoc 10 (entget v))) p2 (cdr (assoc 11 (entget v)))) (if (not (member p1 L)) (setq L (cons p1 L))) (if (not (member p2 L)) (setq L (cons p2 L))) (ssdel v ss) ) (foreach p L (setq ds (vg p)) (cond ((and (car ds) (cadr ds)) (command "-insert" "1" p "" "" (last ds))) ((and (car ds) (not (cadr ds))) (command "-insert" "2" p "" "" (last ds)))) ) ) 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
dvdcad 1 Báo cáo bài đăng Đã đăng Tháng 4 24, 2009 nhờ các bác viết giúp lisp: viết 1 file lsp lấy thông số cua HDD, hay lấy (mã) của ổ cứng hoặc lấy ngày sản xuất của ổ cứng đó. 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
khacsau 0 Báo cáo bài đăng Đã đăng Tháng 4 25, 2009 Chào các anh! C ác anh cho em h ỏi t ý, v ì em m ới d ùng CAD 2007 n ên v ẫn đang t ập s ự. Em c ó 1 file b ản v ẽ đ ã v ẽ tr ên Model v à Z oom v ào c ác Layout (Kho ảng 20 Layout ) V ậy l àm nh ư th ế n ào đ ể in to àn b ộ c ác Layout đ ó. Em kh ông bi ết vi ết L ISP nh ư th ế n ào. C ảm ơn c ác 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
binharch77 163 Báo cáo bài đăng Đã đăng Tháng 4 25, 2009 Mình tạm nghĩ ra cái lisp này, mới thử sơ sơ thôi nhưng thấy chạy cũng đc. Mình đặt tên block là 1 và 2 theo file đính kèm.Sau khi nhập lệnh ins, chọn các line, nó sẽ tự động chèn block. Chú ý là các block có điểm insert và chiều như hình vẽ. http://myfreefilehosting.com/f/6c60799b99_0.03MB sao mình không sử dụng lisp này được????, unknow command???? bác kiểm tra lại xem thử 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
nataca 554 Báo cáo bài đăng Đã đăng Tháng 4 25, 2009 nhờ các bác viết giúp lisp: viết 1 file lsp lấy thông số cua HDD, hay lấy (SERIAL) của ổ cứng hoặc lấy ngày sản xuất của ổ cứng đó. Để bảo mật phải không? Cái này sẽ giúp bạn lấy serial của ổ cứng ;;;;;---------------------------------------------------------- ;;; LAY SERIAL CUA O CUNG (defun GET_DRIVE_SERIAL (Path / fsObj hSn abPth cDrv) (vl-load-com) (if (and (setq fsObj (vlax-create-object "Scripting.FileSystemObject")) (not (vl-catch-all-error-p (setq abPth (vl-catch-all-apply 'vlax-invoke-method (list fsObj 'GetAbsolutePathName Path) ) ) ) ) ) (progn (setq cDrv (vlax-invoke-method fsObj 'GetDrive (vlax-invoke-method fsObj 'GetDriveName abPth ) ) ) (if (vl-catch-all-error-p (setq hSn (vl-catch-all-apply 'vlax-get-property (list cDrv 'SerialNumber) ) ) ) (progn (vlax-release-object cDrv) (setq hSn nil) ) ) (vlax-release-object fsObj) ) ) hSn ) Path là tên ổ cứng. Ví dụ muốn lấy Serial của ổ C: (GET_DRIVE_Serial "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
q288 166 Báo cáo bài đăng Đã đăng Tháng 4 25, 2009 sao mình không sử dụng lisp này được????, unknow command???? bác kiểm tra lại xem thử trong file của bạn đã có block tên "1" và "2" chưa, hoặc nếu bạn muốn đặt tên khác thì sửa dòng : (command "-insert" "1" p "" "" (last ds)) thành (command "-insert" "ten block 1 cua ban" p "" "" (last ds)) (command "-insert" "2" p "" "" (last ds)) thành (command "-insert" "ten block 2 cua ban" p "" "" (last ds)) Nếu đã sửa tên mà vẫn còn báo lỗi thì bạn gửi file cho mình để mình xem, vì thật ra mình chưa thử nghiệm nhiều tình huống khác nhau, chỉ thử trên hình vẽ đơn giản thấy ok thì post lên luô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
dvdcad 1 Báo cáo bài đăng Đã đăng Tháng 4 25, 2009 Để bảo mật phải không? Cái này sẽ giúp bạn lấy mã của ổ cứng Path là tên ổ cứng. Ví dụ muốn lấy mã của ổ C: (GET_DRIVE_mã "C:") Không hiểu sao chữ S e r i a l cứ bị chuyển thành mã sao không được vậy bạn xem lại cái vd ổ C đ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
Nguyen Hoanh 4.664 Báo cáo bài đăng Đã đăng Tháng 4 25, 2009 sao không được vậy bạn xem lại cáivd ổ C đi Dvdcad xem lại đi, được rồi đấy. 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
dvdcad 1 Báo cáo bài đăng Đã đăng Tháng 4 25, 2009 Để bảo mật phải không? Cái này sẽ giúp bạn lấy serial của ổ cứng ;;;;;---------------------------------------------------------- ;;; LAY SERIAL CUA O CUNG (defun GET_DRIVE_SERIAL (Path / fsObj hSn abPth cDrv) (vl-load-com) (if (and (setq fsObj (vlax-create-object "Scripting.FileSystemObject")) (not (vl-catch-all-error-p (setq abPth (vl-catch-all-apply 'vlax-invoke-method (list fsObj 'GetAbsolutePathName Path) ) ) ) ) ) (progn (setq cDrv (vlax-invoke-method fsObj 'GetDrive (vlax-invoke-method fsObj 'GetDriveName abPth ) ) ) (if (vl-catch-all-error-p (setq hSn (vl-catch-all-apply 'vlax-get-property (list cDrv 'SerialNumber) ) ) ) (progn (vlax-release-object cDrv) (setq hSn nil) ) ) (vlax-release-object fsObj) ) ) hSn ) Path là tên ổ cứng. Ví dụ muốn lấy Serial của ổ C: (GET_DRIVE_Serial "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
dvdcad 1 Báo cáo bài đăng Đã đăng Tháng 4 26, 2009 Thanhk you nhé. cho hỏi có cách nào lấy được ngày sản xuất của máy hay cua HDD ko hả 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
khacsau 0 Báo cáo bài đăng Đã đăng Tháng 4 27, 2009 Chào c ác anh C ác anh cho em h ỏi t ý, v ì em m ới d ùng CAD 2007 n ên v ẫn đang t ập s ự. Em c ó 1 file b ản v ẽ đ ã v ẽ tr ên Model v à Z oom v ào c ác Layout (Kho ảng 20 Layout ) V ậy l àm nh ư th ế n ào đ ể in to àn b ộ c ác Layout đ ó(N ếu chọn từng Layout r ồ in th ì l âu l ắm). Em kh ông bi ết vi ết L ISP nh ư th ế n ào. C ảm ơn c ác anh! Khacsau1980@gmail.com 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
nataca 554 Báo cáo bài đăng Đã đăng Tháng 4 27, 2009 Chào c ác anhC ác anh cho em h ỏi t ý, v ì em m ới d ùng CAD 2007 n ên v ẫn đang t ập s ự. Em c ó 1 file b ản v ẽ đ ã v ẽ tr ên Model v à Z oom v ào c ác Layout (Kho ảng 20 Layout ) V ậy l àm nh ư th ế n ào đ ể in to àn b ộ c ác Layout đ ó(N ếu chọn từng Layout r ồ in th ì l âu l ắm). Em kh ông bi ết vi ết L ISP nh ư th ế n ào. C ảm ơn c ác anh! Khacsau1980@gmail.com Cần gì lisp. Cái này chức năng sheet set manager trong Cad còn nhanh hơn nhiều. Thậm chí còn in nhiều bản vẽ mà không cần mở bản vẽ đó ra. 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
khacsau 0 Báo cáo bài đăng Đã đăng Tháng 4 27, 2009 Cần gì lisp. Cái này chức năng sheet set manager trong Cad còn nhanh hơn nhiều. Thậm chí còn in nhiều bản vẽ mà không cần mở bản vẽ đó ra. rất là cảm ơn anh đã giúp em. Nhưng em mới học CAD, em có vào Google tìm nhưng không thấy có ai hướng dẫn dùng heet set manager. Vậy anh có thể hướng dẫn em được không? Cảm ơn anh! Khacsau1980@gmail.com (anh mail cho em nhe) 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
nataca 554 Báo cáo bài đăng Đã đăng Tháng 4 27, 2009 rất là cảm ơn anh đã giúp em. Nhưng em mới học CAD, em có vào Google tìm nhưng không thấy có ai hướng dẫn dùng heet set manager. Vậy anh có thể hướng dẫn em được không? Cảm ơn anh! Khacsau1980@gmail.com (anh mail cho em nhe) Anh search trên diễn đàn đi. Có đấy. Em lấy ví dụ 1 link http://www.cadviet.com/cadnews/content/view/32/1/ Nếu anh mua quyển sách Autocad mới thì nó có hướng dẫn chi tiết chức năng này mà. 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
khacsau 0 Báo cáo bài đăng Đã đăng Tháng 4 28, 2009 Anh search trên diễn đàn đi. Có đấy. Em lấy ví dụ 1 link http://www.cadviet.com/cadnews/content/view/32/1/Nếu anh mua quyển sách Autocad mới thì nó có hướng dẫn chi tiết chức năng này mà. Cảm ơn bạn, mình đã vào diễn đàn rồi nhưng mà không được chi tiết lắm. Mình đã dùng và thấy nó có 2 điều cần sự giúp đỡ. Bản vẽ CAD (Mình gọi là bản gốc) gồm có 20 layout và được đánh theo số thứ tự 1/20, 2/20, 3/20......20/20 1. Mình đã tạo New sheet set, rồi New Subset 1. Nhưng khi Import Layouts as Sheets thì số thứ tự trong New Subset 1 không đúng so với bản vẽ gốc (vì thế khi in ra nó không theo thứ tự từ 1/20,2/20,3/20.....20/20 mà nó cứ lung tung cả) 2. Khi chỉnh sửa bản vẽ CAD (mình gọi là bản vẽ gốc) thì New Subset 1 không tự cập nhật theo bản vẽ gốc. Mong các bạn 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
lelenlau2 0 Báo cáo bài đăng Đã đăng Tháng 4 28, 2009 Vấn đề của Mình chẳng có ai quan tâm cả a? các bác xem thử có làm được không? 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
lelenlau2 0 Báo cáo bài đăng Đã đăng Tháng 4 28, 2009 vậy có lisp nào tự động nội suy cao độ trong nova không? nội suy tại tâm đường tròn dó? sau đây là phai cad của nó, chư nội suy thủ công lâu quá. Anh Em nào giỏi thì hãy nghiên cứu giúp tôi cái này. cám ơn nhiều. Chứ lên diễn đàn toàn nói gì không a? http://www.cadviet.com/upfiles/BAN_VE_NOVA...4_2009bak_3.rar 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
nataca 554 Báo cáo bài đăng Đã đăng Tháng 4 28, 2009 Cảm ơn bạn, mình đã vào diễn đàn rồi nhưng mà không được chi tiết lắm. Mình đã dùng và thấy nó có 2 điều cần sự giúp đỡ.Bản vẽ CAD (Mình gọi là bản gốc) gồm có 20 layout và được đánh theo số thứ tự 1/20, 2/20, 3/20......20/20 1. Mình đã tạo New sheet set, rồi New Subset 1. Nhưng khi Import Layouts as Sheets thì số thứ tự trong New Subset 1 không đúng so với bản vẽ gốc (vì thế khi in ra nó không theo thứ tự từ 1/20,2/20,3/20.....20/20 mà nó cứ lung tung cả) 2. Khi chỉnh sửa bản vẽ CAD (mình gọi là bản vẽ gốc) thì New Subset 1 không tự cập nhật theo bản vẽ gốc. Mong các bạn giúp đỡ. Tất cả những thắc mắc của bạn đều giải quyết được trong Sheet set. Chỉ có điều bạn chưa quen thôi. Mình có đề nghị thế này nhé: chúng ta sẽ lập một chủ đề mới riêng về sheet set manager để box này dành đất cho các bác yêu cầu lisp, ko các bác mắng chít :( 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
uok_vn 0 Báo cáo bài đăng Đã đăng Tháng 5 4, 2009 Chào các bác ! Mình mới học CAD nên và cũng ham hố với mấy cái LISP lắm. Mình muốn có một cái LISP "cộng dồn" như thế này: - Pick object (số bắt đầu) - Pick object or enter a number (tham số cộng dồn) - Chọn điểm (Là tổng của 2 tham số trên) Nếu có tùy chọn nhiều hơn 2 tham số càng tốt. Mình mới tham gia diễn đàn nên chưa biết nhiều. Nếu bác nào có link thì cho mình xin nha. Thanks 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
minhtu2004 36 Báo cáo bài đăng Đã đăng Tháng 5 5, 2009 -Chào mọi người. Mình có 1 vấn đề nhỏ cần mọi người giúp đỡ. -Trong lisp hàm nào để lấy được giá trị của Dim vậy. -VD: có khỏang cách Dim là 3000. Bây giờ mình muốn lấy giá trị 3000 chia cho 1000 rồi lấy kết quả để vào Dim thành 3@1000=<3000>. Mong mọi người giúp đỡ. Đọan code của mình như sau: (DEFUN C:BU () (setq DIM (entsel "\n Chon kich thuoc dim:") PT1 (getpoint "\n Chon diem thu nhat:") PT2 (getpoint "\n Chon diem thu hai:") BT (getint "\n Buoc @:") KC (distance PT1 PT2) KQ (fix (/ KC BT)) ) (command "dim" "newtext" KQ "@" BT "=<>" DIM "") (command "exit") (princ) ) Mình không biết nó sai cho nào ma không lấy kết quả để vào Dim nhờ mọi người giúp đỡ dùm. 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.912 Báo cáo bài đăng Đã đăng Tháng 5 5, 2009 -Chào mọi người. Mình có 1 vấn đề nhỏ cần mọi người giúp đỡ.-Trong lisp hàm nào để lấy được giá trị của Dim vậy. Bạn tham khảo cái này có thể lấy giá trị dim : (alert(rtos (cdr(assoc 42 (entget(car(entsel))))))) Tue_Nv cũng chưa hiểu ý của bạn. Bạn đã có Dim rồi thì pick điểm 1, điểm 2 làm gì nhỉ? Mình nghĩ có lẽ không cần thiế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
minhtu2004 36 Báo cáo bài đăng Đã đăng Tháng 5 5, 2009 (command "dim" "newtext" KQ "@" BT "=<>" DIM "") (command "exit") Dòng lệnh dán kết quả vào Dim như vậy đúng vậy bạn Tue_NV. Mình là nó sai và hok biết sửa như thế nào bạn gíup mình nha. Cám ơn bạ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
Tue_NV 3.912 Báo cáo bài đăng Đã đăng Tháng 5 5, 2009 (command "dim" "newtext" KQ "@" BT "=" DIM "")(command "exit") Dòng lệnh dán kết quả vào Dim như vậy đúng vậy bạn Tue_NV. Mình là nó sai và hok biết sửa như thế nào bạn gíup mình nha. Cám ơn bạn nhiều. Bạn bị sai ở chổ này : KQ : phải là một biến kí tự chữ (string). Trong đoạn Code trên thì biến KQ là kiểu số thực nên nó bị lỗi Bạn dùng hàm Rtos để chuyển kiểu số thực sang kiểu string BT : phải là một biến kí tự chữ (string). Trong đoạn Code trên thì biến BT là kiểu số nguyên nên nó bị lỗi Bạn dùng hàm itoa để chuyển kiểu số nguyên sang kiểu string Và ta dùng hàm strcat để nối chuỗi Mình sửa lại cho bạn này. Bạn xem nhé : (DEFUN C:BU() (setq od (getvar "dimzin")) (setvar "dimzin" 0) (setq DIM (car(entsel "\n Chon kich thuoc dim:")) ENT (cdr(assoc 42 (entget DIM))) BT (getint "\n Buoc @:") thapphan (getint "\n So chu so thap phan :") entc (/ ENT BT) ) (command "dimedit" "n" (strcat (itoa BT) "@" (rtos entc 2 thapphan) "= ") DIM "") (setvar "dimzin" od) (princ) ) có thể sử dụng lệnh dimedit hoặc dòng lệnh (command "dim" "newtext".... là tuỳ bạn. Chúc thành cô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
minhtu2004 36 Báo cáo bài đăng Đã đăng Tháng 5 5, 2009 Cám ơn bạn nhiều. Mình sẽ sửa lại 1 chút cho đúng ý mình. Một lần nữa cám ơn và sẽ nhờ bạn giúp vào những lần sau. 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