phamthanhbinh 3147 Báo cáo bài đăng Đã đăng Tháng 6 5, 2011 vẫn khônh được bác pham thanh binh a bác thử sửa từ lisp này xem nhưng trừ layer: cut,glass,hide,hatch,funitures,tree,text,center lisp này không biết pro nào viết tẩy cả block và dim cực kỳ pro mong pro nào rảnh giúp đỡ Hề hề hề, Mình test thử thấy nó chạy phăm phăm và chuyển tất cả những thằng nào không phải ở các lớp đã chỉ định về lớp Wall mà. Thậm chí cả màu cũng đã chuyển ngon lành về màu 7 bất kể là màu by layer hay không. Cái bạn bảo không được là cái chi nhỉ?? Chắc là cái vụ purge thì phải vì trong lisp mình quên chưa bổ sung thằng cu này. Việc này bạn có thể tự bổ sung được rồi mà. Hề hề hề. 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 3000 Báo cáo bài đăng Đã đăng Tháng 6 5, 2011 Cảm ơn anh Ketxu cái lisp Nut. Mục đích của lisp là đúng rồi, làm trên Line thì tốt. Nhưng sao "chọn đối tượng" là PLine thì không được Cái lisp mình sửa trên lisp bạn gửi, theo yêu cầu change của bạn, cũng chẳng biết mục đích là gì đâu ^^ Bạn sửa lại lisp thành thế này cho chắc : (defun C:nut() (setq ent (car(entsel "\n Chon doi tuong"))) (if (=(cdadr (entget ent)) "LINE")(command "pedit" ent "" "E" "I" pause "x" "")) (if (=(cdadr (entget ent)) "LWPOLYLINE")(command "pedit" ent "E" "I" pause "x" "")) ) Hề hề hề, Mình test thử thấy nó chạy phăm phăm và chuyển tất cả những thằng nào không phải ở các lớp đã chỉ định về lớp Wall mà. Thậm chí cả màu cũng đã chuyển ngon lành về màu 7 bất kể là màu by layer hay không. Cái bạn bảo không được là cái chi nhỉ?? Chắc là cái vụ purge thì phải vì trong lisp mình quên chưa bổ sung thằng cu này. Việc này bạn có thể tự bổ sung được rồi mà. Hề hề hề. E cũng thử test trên 1 bản vẽ nhiều layer, có 1 layer bị khoá, thì thấy nó cứ chạy hoài, chạy hoài 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
3d.decor 1 Báo cáo bài đăng Đã đăng Tháng 6 6, 2011 Hề hề hề, Mình test thử thấy nó chạy phăm phăm và chuyển tất cả những thằng nào không phải ở các lớp đã chỉ định về lớp Wall mà. Thậm chí cả màu cũng đã chuyển ngon lành về màu 7 bất kể là màu by layer hay không. Cái bạn bảo không được là cái chi nhỉ?? Chắc là cái vụ purge thì phải vì trong lisp mình quên chưa bổ sung thằng cu này. Việc này bạn có thể tự bổ sung được rồi mà. Hề hề hề. em dùng rồi lisp chạy hơi nặng và hơi lâu pro à lisp tẩy( chuyển đổi ) nhầm một số layer em định trừ lại, nhiều lúc chuyển tất cả layer về layer wall nhiều lúc chuyển ko hết để lại một số layer thừa ( em định chuyển về layer wall hehe em lại tạm chế được rồi lisp clear.lsp của pro ketxu em lock những layer ko cần chuyển sau đó chạy lisp những layer lock sẽ không bị chuyển kakaka 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
Detailing 281 Báo cáo bài đăng Đã đăng Tháng 6 6, 2011 Vì bạn không chịu đọc bài mình nói Cái theo yêu cầu Nhờ anh tạo lại cái lisp Nut vẫn sử dụng lệnh PE nhưng vào thẳng "Specify location for new vertex:" không phải gõ "e" -> "i" Update code : cho phép bạn chèn liên tiếp, đến bao giờ ấn Esc thì thôi! (defun C:pe(/ ent) (setq ent (car(entsel "\n Chon doi tuong"))) (cond ((=(cdadr (entget ent)) "LINE") (command "pedit" ent "" "E" ) (while (< 0 (getvar "CMDACTIVE")) (command "I" pause)) ) ((=(cdadr (entget ent)) "LWPOLYLINE") (command "pedit" ent "E") (while (< 0 (getvar "CMDACTIVE")) (command "I" pause)) ) )) Nếu mình muốn chèn new vertex tại vị trí giữa vertex thứ 3 và thứ 4 thì lisp này chắc sẽ bị problem nhỏ. ko biết Ketxu đã tính đến chưa? 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
tomboy 21 Báo cáo bài đăng Đã đăng Tháng 6 6, 2011 mình cần tẩy layer thôi còn các block giữ nguyên thuộc tính, chỉ là chuyển layer thôi ko cần xref vì mình không dùng xref chịu thua, chưa 1 lisp nào có thể tẩy được layer của bản vẽ mà thuộc tính của Block được giữ nguyên, nói chung bạn phải định nghĩa lại block của bạn bằng phương pháp thủ công trước khi bạn sử dụng lệnh dlay của 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
ketxu 3000 Báo cáo bài đăng Đã đăng Tháng 6 6, 2011 chịu thua, chưa 1 lisp nào có thể tẩy được layer của bản vẽ mà thuộc tính của Block được giữ nguyên, nói chung bạn phải định nghĩa lại block của bạn bằng phương pháp thủ công trước khi bạn sử dụng lệnh dlay của bạn Sao lại có kết luận này bác nhỉ :blink: 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
tomboy 21 Báo cáo bài đăng Đã đăng Tháng 6 6, 2011 Sao lại có kết luận này bác nhỉ :blink: bạn có chắc dùng lisp để tẩy hết các layer thừa trong bản vẽ trong khi các blocl của bản vẽ đó vẫn giữ nguyên thuộc tính đượ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
phamthanhbinh 3147 Báo cáo bài đăng Đã đăng Tháng 6 6, 2011 E cũng thử test trên 1 bản vẽ nhiều layer, có 1 layer bị khoá, thì thấy nó cứ chạy hoài, chạy hoài bác ạ... Hề hề hề, Xin lỗi bác ketxu vì mình chưa test với layer bị khóa. Có nhẽ do bị khóa mà lisp nó tức quá vì không chuyển được nên nó cứ chạy loanh quanh hoài như vậy. Để mình kiểm tra lại bác nhé. @ bạn 3d.decor: Lisp tẩy nhầm vì cái tên của layer đó không có trong đề bài bạn đưa ra. Bạn hãy xem kỹ cái lisp để biết những layer sẽ không bị chuyển. Ngoài các layer đã được thống kê trong hàm (or .....) nếu bạn muốn thêm layer nào nữa thì chỉ việc thêm nó vào trong hàm này bạn nhé. Tương tự với cái không muốn mà bị chuyển, bạn phải loại cái tên layer đó ra khỏi cái hàm (or ....) Hề hề hề,... 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
tomboy 21 Báo cáo bài đăng Đã đăng Tháng 6 6, 2011 Hề hề hề, Xin lỗi bác ketxu vì mình chưa test với layer bị khóa. Có nhẽ do bị khóa mà lisp nó tức quá vì không chuyển được nên nó cứ chạy loanh quanh hoài như vậy. Để mình kiểm tra lại bác nhé. @ bạn 3d.decor: Lisp tẩy nhầm vì cái tên của layer đó không có trong đề bài bạn đưa ra. Bạn hãy xem kỹ cái lisp để biết những layer sẽ không bị chuyển. Ngoài các layer đã được thống kê trong hàm (or .....) nếu bạn muốn thêm layer nào nữa thì chỉ việc thêm nó vào trong hàm này bạn nhé. Tương tự với cái không muốn mà bị chuyển, bạn phải loại cái tên layer đó ra khỏi cái hàm (or ....) Hề hề hề,... lisp của bạn chỉ có tác dụng cho 1 bản vẽ duy nhất, nếu bản vẽ khác, layer khác thì lại phải lisp khác, bạn nên cải tiến cho tham số đầu vào để linh hoạt với tất cả bản vẽ 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
Detailing 281 Báo cáo bài đăng Đã đăng Tháng 6 6, 2011 lisp của bạn chỉ có tác dụng cho 1 bản vẽ duy nhất, nếu bản vẽ khác, layer khác thì lại phải lisp khác, bạn nên cải tiến cho tham số đầu vào để linh hoạt với tất cả bản vẽ Bạn tomboy chú ý đây là khu vực viết lisp theo yêu cầu: nên lisp viết ra phục vụ cho ng yêu cầu là chính (1 mục đích) ng khác thấy dùng dc thì down về edit lại để xài. Theo yêu cầu của bạn -> Bạn nên tạo thread mới chẳng hạn: viết software theo yêu cầu sau đó tập hợp nhiều ý tưởng cho từng chuyên ngành cụ thể -> viết soft để giải quyết tất cả những yêu cầ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
tomboy 21 Báo cáo bài đăng Đã đăng Tháng 6 6, 2011 Bạn tomboy chú ý đây là khu vực viết lisp theo yêu cầu: nên lisp viết ra phục vụ cho ng yêu cầu là chính (1 mục đích) ng khác thấy dùng dc thì down về edit lại để xài. Theo yêu cầu của bạn -> Bạn nên tạo thread mới chẳng hạn: viết software theo yêu cầu sau đó tập hợp nhiều ý tưởng cho từng chuyên ngành cụ thể -> viết soft để giải quyết tất cả những yêu cầu đó. mình không tán thành với cách nói của bạn, thực ra diễn đàn là để chia sẻ và học hỏi, mình tham gia diễn đàn cũng vì mục đích này, mình thấy đây là sân chơi bổ ích, ai cũng có thể tham gia vì ai cũng có khiếm khuyết hay những lỗ hổng trong kiến thức của mình vì vậy đây là sân chơi lành mạnh nhằm củng cố kiến thức cho ngưòi chơi là chính . Nếu bạn nói "đây là khu vực viết lisp theo yêu cầu " có nghĩa là đây là một xưởng chuyên gia công các loại mặt hàng theo yêu cầu của khách hàng, nếu ai không phải là khách hàng của xưởng này thì xin mời đi chỗ khác hoặc là không được có ý kiến gì phải không bạn. Nói như bạn thì các bạn là thầy hết rồi, giỏi hết rồi không cần phải học nữa mà chỉ đi dậy người ta 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
3d.decor 1 Báo cáo bài đăng Đã đăng Tháng 6 6, 2011 trích dẫn tomboy chịu thua, chưa 1 lisp nào có thể tẩy được layer của bản vẽ mà thuộc tính của Block được giữ nguyên, nói chung bạn phải định nghĩa lại block của bạn bằng phương pháp thủ công trước khi bạn sử dụng lệnh dlay của bạn bạn có chắc dùng lisp để tẩy hết các layer thừa trong bản vẽ trong khi các blocl của bản vẽ đó vẫn giữ nguyên thuộc tính được không? bác ơi bác dùng thử lisp này xem (defun c:clear(/ nla) (vl-load-com) (command "undo" "be") (setvar "cmdecho" 0) (setq nla "funitures") (if (not (tblsearch "layer" nla))(command "layer" "n" nla "c" "31" nla "lt" "continuous" nla "")) (setvar "clayer" nla) (command "change" (ssget "X") "" "p" "la" nla "c" "31" "") (setq adoc (vla-get-activedocument (vlax-get-acad-object))) (vlax-for block (vla-get-blocks adoc) (if (not (wcmatch (strcase (vla-get-name block) t) "*_space*")) (vlax-for ent block (progn (vla-put-color ent "31") (vla-put-layer ent "funitures") ) ) ) ) (acet-sysvar-set (list "dimclrt" 256 "dimclre" 256 "dimclrd" 256 "INSUNITS" 4 "INSUNITSDEFSOURCE" 4 "INSUNITSDEFTARGET" 4)) (command "dim1" "update" (ssget "X" '((0 . "Leader"))) "") (vla-regen adoc acactiveviewport) (command "-purge" "a" "" "N") (command "undo" "e") (princ)) hehe em lại tạm chế được rồi lisp clear.lsp của pro ketxu em lock những layer ko cần chuyển sau đó chạy lisp những layer lock sẽ không bị chuyển kakaka em rất cám ơn các pro đã nhiệt tình giúp thành viên amater như em bác nào không giúp thì em lại tìm cách tạm chế bằng cách không hiểu về lập trình nhưng em copy các dòng lisp các pro viết sẵn để chế với nhau không thành công cũng thành nhân vậ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
Detailing 281 Báo cáo bài đăng Đã đăng Tháng 6 6, 2011 mình không tán thành với cách nói của bạn, thực ra diễn đàn là để chia sẻ và học hỏi, mình tham gia diễn đàn cũng vì mục đích này, mình thấy đây là sân chơi bổ ích, ai cũng có thể tham gia vì ai cũng có khiếm khuyết hay những lỗ hổng trong kiến thức của mình vì vậy đây là sân chơi lành mạnh nhằm củng cố kiến thức cho ngưòi chơi là chính . Nếu bạn nói "đây là khu vực viết lisp theo yêu cầu " có nghĩa là đây là một xưởng chuyên gia công các loại mặt hàng theo yêu cầu của khách hàng, nếu ai không phải là khách hàng của xưởng này thì xin mời đi chỗ khác hoặc là không được có ý kiến gì phải không bạn. Nói như bạn thì các bạn là thầy hết rồi, giỏi hết rồi không cần phải học nữa mà chỉ đi dậy người ta thôi. Phần màu đỏ: Ai cũng có quyền yêu cầu -> ai cũng là khách hàng của xưởng nhưng ko phải yêu cầu nào cũng dc đáp ứng Chỉ nhắc bạn yêu cầu nhầm chỗ thôi, bạn tạo cái topic mới giống mình vừa tạo đây : http://www.cadviet.com/forum/index.php?showtopic=44425 Ko thể chỉ vì 1 yêu cầu sửa 1 biến hệ thống mà bắt ng viết lisp (viết dùm) care hết tất cả các trường hợp -> xài ở đâu cũng dc. p/s: bạn nhạy cảm với các bài viết có ý kiến ngược với mình như vậy thì khó mà học tập dc ở nơi mà đúng sai lẫn lộn như môi trường forum lắm. Chúc bạn vui. 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 6 6, 2011 mình không tán thành với cách nói của bạn, thực ra diễn đàn là để chia sẻ và học hỏi, mình tham gia diễn đàn cũng vì mục đích này, mình thấy đây là sân chơi bổ ích, ai cũng có thể tham gia vì ai cũng có khiếm khuyết hay những lỗ hổng trong kiến thức của mình vì vậy đây là sân chơi lành mạnh nhằm củng cố kiến thức cho ngưòi chơi là chính . Nếu bạn nói "đây là khu vực viết lisp theo yêu cầu " có nghĩa là đây là một xưởng chuyên gia công các loại mặt hàng theo yêu cầu của khách hàng, nếu ai không phải là khách hàng của xưởng này thì xin mời đi chỗ khác hoặc là không được có ý kiến gì phải không bạn. Nói như bạn thì các bạn là thầy hết rồi, giỏi hết rồi không cần phải học nữa mà chỉ đi dậy người ta thôi. Hề hề hề, Không phải thế , không phải thế. Bác Tomboy chớ nóng. Chỉ là góp ý với nhau thôi mà, đúng là mọi người đều có quyền góp ý, ý kiến của bác cũng rất tuyệt, tuy nhiên do thời gian có hạn và với mục tiêu là giúp đỡ được người cần sớm nhất nên mình cũng chưa nghĩ sâu hơn được. Rất cám ơn bác để mình sẽ nghĩ tiếp và hoàn chỉnh nó. Còn bác detailing góp ý cũng chỉ là nhắc bác rằng do tính chất đặc biệt của chuyên mục mà thôi, chả phải phân biệt khách hành với chủ hàng chi đâu, và càng chả phải có ý không tôn trọng bác đâu. Hề hề hề, Chớ giận, chớ giận nghen 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
tomboy 21 Báo cáo bài đăng Đã đăng Tháng 6 6, 2011 Hề hề hề, Không phải thế , không phải thế. Bác Tomboy chớ nóng. Chỉ là góp ý với nhau thôi mà, đúng là mọi người đều có quyền góp ý, ý kiến của bác cũng rất tuyệt, tuy nhiên do thời gian có hạn và với mục tiêu là giúp đỡ được người cần sớm nhất nên mình cũng chưa nghĩ sâu hơn được. Rất cám ơn bác để mình sẽ nghĩ tiếp và hoàn chỉnh nó. Còn bác detailing góp ý cũng chỉ là nhắc bác rằng do tính chất đặc biệt của chuyên mục mà thôi, chả phải phân biệt khách hành với chủ hàng chi đâu, và càng chả phải có ý không tôn trọng bác đâu. Hề hề hề, Chớ giận, chớ giận nghen bác. hì hì, chỉ là trò đùa thôi mà. Mình tham gia diễn đàn cũng lâu rồi, mình thường xuyên theo dõi diễn đàn này, nhất là ở chủ đề viết lisp theo yêu cầu và mình cũng học hỏi được rất nhiều từ diễn đàn. mình thấy một chương trình hoàn chỉnh là phải tính tới tất cả các điều kiện của bài toán, sai lầm lớn nhất của người lập trình là ở chỗ đó, bạn thử nghĩ xem nếu mình đưa ra bài toán giải pt bậc 2 như sau 7x2+15x+8=0 nếu chỉ là bài toán với các tham số có sẵn như thế này và người lập trình chỉ cần gán biến A=7, B=15 và C=8 thì chuyện gì sẽ sảy ra khi mình lại có bài toán khác nhỉ, không lẽ người sử dụng lại phải mò vào mã code để chỉnh sửa lại hay sao. cũng từ bài toán này mình có thể suy rộng ra thôi, do vậy trong chủ đề này mình cũng có đóng góp ý kiến chân thành rất mong các bạn thông cả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
tomboy 21 Báo cáo bài đăng Đã đăng Tháng 6 6, 2011 (defun c:clear(/ nla) (vl-load-com) (command "undo" "be") (setvar "cmdecho" 0) (setq nla "funitures") (if (not (tblsearch "layer" nla))(command "layer" "n" nla "c" "31" nla "lt" "continuous" nla "")) (setvar "clayer" nla) (command "change" (ssget "X") "" "p" "la" nla "c" "31" "") (setq adoc (vla-get-activedocument (vlax-get-acad-object))) (vlax-for block (vla-get-blocks adoc) (if (not (wcmatch (strcase (vla-get-name block) t) "*_space*")) (vlax-for ent block (progn (vla-put-color ent "31") (vla-put-layer ent "funitures") ) ) ) ) (acet-sysvar-set (list "dimclrt" 256 "dimclre" 256 "dimclrd" 256 "INSUNITS" 4 "INSUNITSDEFSOURCE" 4 "INSUNITSDEFTARGET" 4)) (command "dim1" "update" (ssget "X" '((0 . "Leader"))) "") (vla-regen adoc acactiveviewport) (command "-purge" "a" "" "N") (command "undo" "e") (princ)) hehe em lại tạm chế được rồi lisp clear.lsp của pro ketxu em lock những layer ko cần chuyển sau đó chạy lisp những layer lock sẽ không bị chuyển kakaka em rất cám ơn các pro đã nhiệt tình giúp thành viên amater như em bác nào không giúp thì em lại tìm cách tạm chế bằng cách không hiểu về lập trình nhưng em copy các dòng lisp các pro viết sẵn để chế với nhau không thành công cũng thành nhân vậy mình test trên bản vẽ này báo lỗi: http://www.cadviet.com/upfiles/3/test_clear.dwg Ôi chao, sao mà máy em function có tiếp đầu ngữ Vla lại không có trong phần Help trong máy mình nhỉ, lạ thật ấy vậy mà nó vẫn chạy vù vù các bác ạ, về phần này bác nào pro chia sẻ cho em 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
duy782006 1594 Báo cáo bài đăng Đã đăng Tháng 6 6, 2011 Vì bạn không chịu đọc bài mình nói Cái theo yêu cầu Nhờ anh tạo lại cái lisp Nut vẫn sử dụng lệnh PE nhưng vào thẳng "Specify location for new vertex:" không phải gõ "e" -> "i" Update code : cho phép bạn chèn liên tiếp, đến bao giờ ấn Esc thì thôi! (defun C:pe(/ ent) (setq ent (car(entsel "\n Chon doi tuong"))) (cond ((=(cdadr (entget ent)) "LINE") (command "pedit" ent "" "E" ) (while (< 0 (getvar "CMDACTIVE")) (command "I" pause)) ) ((=(cdadr (entget ent)) "LWPOLYLINE") (command "pedit" ent "E") (while (< 0 (getvar "CMDACTIVE")) (command "I" pause)) ) )) Theo cái sự biết + nghe ngóng của mình thì với lisp nút như trên chưa tính tới điểm muốn tạo mới nó nằm ở phân đoạn nào của pline nên đỉnh được chèn thên cứ được nối với đỉnh đầu của block thì phải. 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
beba 0 Báo cáo bài đăng Đã đăng Tháng 6 6, 2011 Anh Duy ơi ! cái lisp nội suy cao độ em dùng rất tốt, nhờ nó em đỡ biết bao nhiêu. Thành thật rất cảm ơn anh rất nhiều Nhưng sao từ Tết đến giờ anh không vào http://duy782006.blogspot.com/2009/08/yeu-cau-viet-lisp.htmlgiúp mọi người nữa vậy. Mọi người chờ anh miết :rolleyes: 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 3000 Báo cáo bài đăng Đã đăng Tháng 6 6, 2011 mình test trên bản vẽ này báo lỗi: http://www.cadviet.com/upfiles/3/test_clear.dwg Ôi chao, sao mà máy em function có tiếp đầu ngữ Vla lại không có trong phần Help trong máy mình nhỉ, lạ thật ấy vậy mà nó vẫn chạy vù vù các bác ạ, về phần này bác nào pro chia sẻ cho em với Mình thấy hơi buồn nếu bạn dùng xref làm chuẩn mực test khi đang nói về Block :) Mình xin khẳng định lisp clear không có tác dụng với Xref Còn câu bạn nói mình chưa kịp lĩnh hội đã phải đi công trường rồi, giờ mới dám hỏi bạn : theo bạn, thuộc tính của block gồm những gì, và tại sao không thể thay đổi layer các đối tượng bên trong mà không làm thay đổi thuộc tính của block ?? 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
ketxu 3000 Báo cáo bài đăng Đã đăng Tháng 6 6, 2011 trích dẫn tomboy chịu thua, chưa 1 lisp nào có thể tẩy được layer của bản vẽ mà thuộc tính của Block được giữ nguyên, nói chung bạn phải định nghĩa lại block của bạn bằng phương pháp thủ công trước khi bạn sử dụng lệnh dlay của bạn bạn có chắc dùng lisp để tẩy hết các layer thừa trong bản vẽ trong khi các blocl của bản vẽ đó vẫn giữ nguyên thuộc tính được không? bác ơi bác dùng thử lisp này xem hehe em lại tạm chế được rồi Hoặc đi theo hướng khác là dùng laymrg như thế này xem sao ? Mình viết vội, hi vọng bạn tiếp tục chế thêm được.lstLay-Re là danh sách các Layer giữ lại, bạn cứ thêm vào nhé ^^ (defun c:clay(/ clay lstLay lstCmd) (command "undo" "be") (setvar "cmdecho" 0) (setq lstLay-Re '("defpoints" "KCVN-HATCH") ;Danh sach layer giu lai Lay-dich "Test" ;Ten layer chuyen tat ca ve color "100" ;Mau ltype "continuous" ;Linetype lstLay-Del (table "Layer") lstLay-Del (vl-remove-if '(lambda (i) (or (vl-position i lstLay-Re ) (= i Lay-dich))) lstLay-Del )) (if (= (tblsearch "layer" Lay-dich) nil) (command "layer" "n" Lay-dich "c" color Lay-dich "lt" ltype Lay-dich "") ) (setq lstCmd (strcat "-laymrg\r" (apply 'strcat (mapcar '(lambda(x) (strcat "N\r" x "\r")) lstLay-Del)) "\r" "N\r" Lay-dich "\rY\r" )) (vla-sendcommand (vla-get-activedocument(vlax-get-acad-object)) lstCmd) (command "undo" "en") ) (defun Table (s / d r) (while (setq d (tblnext s (null d))) (setq r (cons (cdr (assoc 2 d)) r)) ) ) 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
beba 0 Báo cáo bài đăng Đã đăng Tháng 6 7, 2011 Nhờ anh Ketxu xem lại giúp em : cái lisp PE làm trên Cad 2007 thì không vấn đề gì, nhưng sao làm trên Cad 14 hay 2002 nếu mình chọn PLine thì nó báo " Chon doi tuongnil " rồi thoát luôn Phần mềm Nova nó chạy ổn trên Cad 14 hay 2002 nên em vẫn phải dùng nó. Anh sửa lại sao cho dùng được 2 bản Cad này giúp em. Cảm ơn anh 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
3d.decor 1 Báo cáo bài đăng Đã đăng Tháng 6 7, 2011 Hoặc đi theo hướng khác là dùng laymrg như thế này xem sao ? Mình viết vội, hi vọng bạn tiếp tục chế thêm được.lstLay-Re là danh sách các Layer giữ lại, bạn cứ thêm vào nhé ^^ (defun c:clay(/ clay lstLay lstCmd) (command "undo" "be") (setvar "cmdecho" 0) (setq lstLay-Re '("defpoints" "KCVN-HATCH") ;Danh sach layer giu lai Lay-dich "Test" ;Ten layer chuyen tat ca ve color "100" ;Mau ltype "continuous" ;Linetype lstLay-Del (table "Layer") lstLay-Del (vl-remove-if '(lambda (i) (or (vl-position i lstLay-Re ) (= i Lay-dich))) lstLay-Del )) (if (= (tblsearch "layer" Lay-dich) nil) (command "layer" "n" Lay-dich "c" color Lay-dich "lt" ltype Lay-dich "") ) (setq lstCmd (strcat "-laymrg\r" (apply 'strcat (mapcar '(lambda(x) (strcat "N\r" x "\r")) lstLay-Del)) "\r" "N\r" Lay-dich "\rY\r" )) (vla-sendcommand (vla-get-activedocument(vlax-get-acad-object)) lstCmd) (command "undo" "en") ) (defun Table (s / d r) (while (setq d (tblnext s (null d))) (setq r (cons (cdr (assoc 2 d)) r)) ) ) thank you pro lisp chạy rất ổn phần chú thích tiếng việt tạo điều kiện cho amater sửa theo ý thích mỗi người rất dễ hiểu block tấy sạch tinh layer xong vẫn giữ nguyên thuộc tính lisp chạy cũng nhẹ không nặng lắm rất cám ơn pro nhiệt tình giúp 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
lenhatanh 2 Báo cáo bài đăng Đã đăng Tháng 6 7, 2011 Công việc của em rất hay phải bổ sung mặt cắt địa dình từ bình đồ (Bình đồ 2D, chỉ có các đường đồng mức 2D và rất ít Text cao độ). Mỗi lần vẽ thêm MCN rất mất thời gian và công sức... Em có ý tưởng lập một lisp như sau: Chuyển bình đồ thành 3D (Các đường ĐM có cao độ Z), sau khi vạch một đường (Line or Pline) thể hiện vị trí mặt cắt thì CT sẽ chuyển Line or Pline đó thành Face (hoặc gì gì đó) rồi tìm giao điểm của nó với các đường Đ.Mức để vẽ được mặt cắt ngang Đ.hình tại vị trí vừa vạch trên B.Đồ. Em nhờ các Bác tư vấn giúp xem liệu có thể thực hiện được không ?. Em xin cám ơn trướ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
ketxu 3000 Báo cáo bài đăng Đã đăng Tháng 6 7, 2011 Nhờ anh Ketxu xem lại giúp em : cái lisp PE làm trên Cad 2007 thì không vấn đề gì, nhưng sao làm trên Cad 14 hay 2002 nếu mình chọn PLine thì nó báo " Chon doi tuongnil " rồi thoát luôn Phần mềm Nova nó chạy ổn trên Cad 14 hay 2002 nên em vẫn phải dùng nó. Anh sửa lại sao cho dùng được 2 bản Cad này giúp em. Cảm ơn anh nhiều Rất tiếc mình không có 2 CAD này để kiểm tra giúp bạn. Do lisp dùng command nên có nguy cơ bị lệ thuộc vào phiên bản rất lớn :) Hi vọng các bác khác dùng CAD 2 đời này sẽ giúp 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
3d.decor 1 Báo cáo bài đăng Đã đăng Tháng 6 7, 2011 pro nào viết hộ em lisp dùng lệnh WIPEOUT kiểu như hach được không chứ chon lần lượt mất công quá kiểu như chỉ vào vùng chon và ok là đượ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