Nguyen Hoanh 4670 Báo cáo bài đăng Đã đăng Tháng 7 31, 2007 Vẫn không được bác à, khắc phục được 90% rùi Tức là nhiều chữ trùng nhau trong 1 dòng thì nó đếm là 1 đơn vị (khá hơn 1 chút so với khi chưa thay IF) nhưng 100% thì phải là nhiều chữ trùng nhau trong 1 dòng thì đếm là 0 (Vì chỉ đếm những text giống y sỳ text được chọn thôi) Em đang dùng cad 2005 - hay nó bị lỗi gì hả bác? tức là phải y chang? ví dụ chuỗi nhập vào là 'thịt chó Anh Tú' thì chỉ có chuỗi nào giống y chang mới được tính, còn các chuỗi 'thịt chó Anh Tú xịn', 'thịt chó Anh Tú thật', 'thịt chó Anh Tú gốc', 'quán thịt chó Anh Tú'... sẽ không được tí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
xaydung 12 Báo cáo bài đăng Đã đăng Tháng 8 1, 2007 Đúng thế đó 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
Nguyen Hoanh 4670 Báo cáo bài đăng Đã đăng Tháng 8 1, 2007 Đúng thế đó bác à! bạn thay dòng lệnh (if (wcmatch gt (strcat "*" sw "*")) bằng (if (= gt sw) là được. Và lisp mới sẽ là: (defun c:wcnt (/ sw ss sotu pp) (defun sudung (ham ss / sodt index entdt soapp) (setq sodt (cond (ss (sslength ss)) (t 0) ) soapp 0 index 0 ) (repeat sodt (setq entdt (ssname ss index) index (1+ index) ) (if (ham entdt) (setq soapp (1+ soapp)) ) ) soapp ) (defun dem (ent / tt gt) (setq tt (entget ent) gt (cdr (assoc 1 tt)) ) (if (= gt sw) (setq sotu (1+ sotu) ;;; gt (vl-string-subst "" sw gt) ) ) ) (princ "\nWord Count © CADViet.com 2007") (while (or (not sw) (= sw "") ) (setq sw (cdr (assoc 1 (entget (car (entsel "\nPick vao doi tuong text de lay gia tri: ")))))) ) (setq ss (ssget '((0 . "TEXT"))) sotu 0 ) (sudung dem ss) (setq pp (strcat "\nSo tu " sw " xuat hien trong cac doi tuong text vua chon la: " (itoa sotu) ) ) (princ pp) (entmake (list (cons 0 "TEXT") (cons 10 (setq tmp (getpoint "\nVao diem chen text ket qua: ")) ) (cons 40 (getdist tmp "\nVao chieu cao chu: ")) (cons 1 pp) ) ) (princ) ) (vl-load-com) (princ "\nWord Count © 2007, CADViet.com") (princ "\nSu dung lenh WCNT de bat dau!") (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
xaydung 12 Báo cáo bài đăng Đã đăng Tháng 8 1, 2007 OK! 100% rùi Cám ơn bác nhiều lắm Bác có thể nhận em 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
conghoa 136 Báo cáo bài đăng Đã đăng Tháng 8 1, 2007 [/b]11 AM']Anh Hoanh ơi. Em đang rất cần lisp có nội dung như saukhi tải lisp yêu cầu nhập kí tự(string) cần tìm sau đó nhập điểm chèn trên màn hình, hiện ra kết quả là số lượng ký tự như thế đã tìm thấy là bao nhiêu Em có biết đến lệnh find nhưng lệnh này nó tìm (find) và thay thế (replace) chứ không đếm được số lượng như trên. Anh giúp em với nha. Em cám ơn nhiều Có một mẹo nhỏ đơn giản để có thể đếm được các ký tự nhập vào đó là khi bạn search bằng find xong, ấn ctrl+c ---> sẽ xuất hiện ngay số lượng các đối tượng được chọn bằng find :s_dead: @Nguyen Hoang bạn là giúp mình cái này với Mình đã phải ngồi căn lại khoảng cách giữa các dòng dim cho nó bằng nhau và cảm thấy hơi vất. Mình muốn các bạn giúp cho 1 lisp có thể tự động căn chỉnh khoảng cách các dòng dim bằng nhau. ví dụ:- có 3 hàng dim (dim mặt bằng, có khoảng cách không bằng nhau ). Khi dùng lisp sẽ tự động căn chỉnh khoảng khoảng cách giũa các hàng dim bằng 1 giá trị nhập vào từ bàn phím. Thanks! 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 4670 Báo cáo bài đăng Đã đăng Tháng 8 2, 2007 Mình đã phải ngồi căn lại khoảng cách giữa các dòng dim cho nó bằng nhau và cảm thấy hơi vất. Mình muốn các bạn giúp cho 1 lisp có thể tự động căn chỉnh khoảng cách các dòng dim bằng nhau. ví dụ:- có 3 hàng dim (dim mặt bằng, có khoảng cách không bằng nhau ). Khi dùng lisp sẽ tự động căn chỉnh khoảng khoảng cách giũa các hàng dim bằng 1 giá trị nhập vào từ bàn phím. Bạn hãy mô tả cách mà bạn muốn lisp làm. Tôi đã rõ về mục đích, nhưng chưa rõ lisp sẽ phải làm gì. Chọn các đối tượng dim như thế nào? Bạn lưu ý: có một công việc rất dễ với con người là nhìn ra các dim thẳng hàng thành 1 nhóm, nhưng lại rất khó với máy tính. rồi căn hai hàng này bằng một khoảng cách? Khoảng cách này bằng bao nhiều? vì sẽ gặp phải trường hợp các giá trị dim có độ lớn khác nhau (do vẽ không chuẩ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
conghoa 136 Báo cáo bài đăng Đã đăng Tháng 8 2, 2007 Giả sử mình dim một hình như H1, lúc này khoảng cách giữa 3 hàng dim là không bằng nhau (mình dim khoảng cách vào chỉ để nhìn cho rõ thôi, còn thực tế thì kích thước đó sẽ thay đôi :s_dead:) khi dùng lisp, nhập vào giá trị bằng 5 (chẳng hạn) thì 3 hàng dim đó sẽ được cách nhau bằng 5 (mặc định cái hàng nào làm chuẩn để các hàng dim khác cách đều nhau là tùy người viết lisp :D). H2 là kết quả khi thực hiện lisp. Không biết mình mô tả như thế đã rõ chưa nhỉ? :ph34r: Cảm ơn bạn đã quan tâ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
Nguyen Hoanh 4670 Báo cáo bài đăng Đã đăng Tháng 8 2, 2007 Không biết mình mô tả như thế đã rõ chưa nhỉ? :s_dead: Cảm ơn bạn đã quan tâm! Vẫn như trước khi bạn post bài này! Tôi đã rõ về mục đích, nhưng chưa rõ lisp sẽ phải làm gì. Chọn các đối tượng dim như thế nào? Bạn lưu ý: có một công việc rất dễ với con người là nhìn ra các dim thẳng hàng thành 1 nhóm, nhưng lại rất khó với máy tí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
conghoa 136 Báo cáo bài đăng Đã đăng Tháng 8 2, 2007 Mình thử nghĩ 1 cách này xem có được không nhé! *chạy lệnh lisp: ----> lisp bắt chọn hàng dim thứ 1 (mình chọn hàng dim 3,5,3,5,3,5...) ----> lisp bắt chọn hàng dim thứ 2 (mình chọn hàng dim 10) ----> lisp bắt chọn hàng dim thứ 3 (mình chọn hàng dim 30) ----> lisp bắt nhập khoảng cách các dim (mình nhập vào 5) ----> kết thúc lệnh Lisp sẽ thực hiện công việc move hàng dim3,5,3,5,3,5... cách hàng dim10 1 khoảng la` 5 và .... move hàng dim30 cách hàng dim10 1 khoảng la` 5 Nhìn thì hơi dài dòng nhưng thực hiện lệnh chắc cũng không lau lắm :s_dead: 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 4670 Báo cáo bài đăng Đã đăng Tháng 8 2, 2007 Mình thử nghĩ 1 cách này xem có được không nhé! *chạy lệnh lisp: ----> lisp bắt chọn hàng dim thứ 1 (mình chọn hàng dim 3,5,3,5,3,5...) ----> lisp bắt chọn hàng dim thứ 2 (mình chọn hàng dim 10) ----> lisp bắt chọn hàng dim thứ 3 (mình chọn hàng dim 30) ----> lisp bắt nhập khoảng cách các dim (mình nhập vào 5) ----> kết thúc lệnh Lisp sẽ thực hiện công việc move hàng dim3,5,3,5,3,5... cách hàng dim10 1 khoảng la` 5 và .... move hàng dim30 cách hàng dim10 1 khoảng la` 5 Nhìn thì hơi dài dòng nhưng thực hiện lệnh chắc cũng không lau lắm :s_dead: OK 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
xaydung 12 Báo cáo bài đăng Đã đăng Tháng 8 3, 2007 các bác ơi em đang cần 1 lisp có nội dung như sau: trên màn hình có các điểm point ví dụ 4 điểm do em vừa vẽ ra khi chạy lisp sẽ yêu cầu chọn các điểm point trên màn hình em chọn 4 điểm trên, sau khi chạy lisp đó nó sẽ vẽ 1 đường pline từ điểm 1 đến 2 đến 3 đến 4 với cơ sở phân biệt các điểm là : điểm 1 : điểm point đầu tiên em pick trên màn hình điểm 2 : điểm point thứ 2 em pick trên màn hình điểm 3 : điểm point thứ 3 em pick trên màn hình điểm 4 : điểm point thứ 4 em pick trên màn hình cám ơn các pác 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
Nguyen Hoanh 4670 Báo cáo bài đăng Đã đăng Tháng 8 3, 2007 các bác ơi em đang cần 1 lisp có nội dung như sau:trên màn hình có các điểm point ví dụ 4 điểm do em vừa vẽ ra khi chạy lisp sẽ yêu cầu chọn các điểm point trên màn hình em chọn 4 điểm trên, sau khi chạy lisp đó nó sẽ vẽ 1 đường pline từ điểm 1 đến 2 đến 3 đến 4 với cơ sở phân biệt các điểm là : điểm 1 : điểm point đầu tiên em pick trên màn hình điểm 2 : điểm point thứ 2 em pick trên màn hình điểm 3 : điểm point thứ 3 em pick trên màn hình điểm 4 : điểm point thứ 4 em pick trên màn hình cám ơn các pác trước! tên lệnh là NP. (defun c:np ( / sel index ent tt tendt p tappoint ) (princ "\nNoi Point © CADViet.com 2007") (setq sel (entsel "\nChon diem point dau tien: ") index 0 ) (while sel (setq ent (car sel) tt (entget ent) tendt (cdr (assoc 0 tt)) ) (if (= tendt "POINT") (setq index (1+ index) p (cdr (assoc 10 tt)) tappoint (append tappoint (list p)) ) (princ "\nHay pick vao mot doi tuong point") ) (setq sel (entsel (strcat "\nChon diem point thu " (itoa index) ": ")) ) ) (luuos) (setvar "osmode" 0) (command ".pline") (foreach p tappoint (command p) ) (command "") (traos) ) (defun luuos () (setq HOANH_OSMODE (getvar "OSMODE") HOANH_AUTOSNAP (getvar "AUTOSNAP") ) ) (defun traos () (if HOANH_OSMODE (setvar "OSMODE" HOANH_OSMODE) ) (if HOANH_AUTOSNAP (setvar "AUTOSNAP" HOANH_AUTOSNAP) ) ) (princ "\nNP - free lisp from www.cadviet.com") (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
xaydung 12 Báo cáo bài đăng Đã đăng Tháng 8 3, 2007 cám ơn bác Hoanh , nhưng bác ơi ý em hơi khác 1 chút chọn điểm ở đây không phải là chọn từng điểm mà chọn tất cả các điểm cùng một lúc (kiểu chọn cửa sổ cross đó) bác có thể sửa cho em một chút nữa được không? cám ơn bác 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
Nguyen Hoanh 4670 Báo cáo bài đăng Đã đăng Tháng 8 3, 2007 cám ơn bác Hoanh , nhưng bác ơiý em hơi khác 1 chút chọn điểm ở đây không phải là chọn từng điểm mà chọn tất cả các điểm cùng một lúc (kiểu chọn cửa sổ cross đó) bác có thể sửa cho em một chút nữa được không? cám ơn bác nhiều! Chọn tất cả cùng 1 lúc thì lấy đâu ra thứ tự các điể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
xaydung 12 Báo cáo bài đăng Đã đăng Tháng 8 4, 2007 Em đang cần 1 lisp có nội dung như sau: trên màn hình có text là ABCD khi chạy lisp sẽ chọn text và điểm chèn kết quả trên màn hình sẽ có các dòng kết quả sau: có 4 kí tự lần lượt là: A, B, C, D trong text trên với kí tự A ở vị trí 1 với kí tự B ở vị trí 2 với kí tự C ở vị trí 3 với kí tự D ở vị trí 4 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
conghoa 136 Báo cáo bài đăng Đã đăng Tháng 8 4, 2007 @xaydung cái lisp dạng này hình như trong rum cũng có roài 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
xaydung 12 Báo cáo bài đăng Đã đăng Tháng 8 5, 2007 Tìm lisp lấy ra được giá trị width(độ rộng) của polyline như sau: chọn 1 pline có trên màn hình, sau đó nhập điểm chèn kết quả cho ra giá trị là số của độ rộng đường polyline. Anh em nào có cho mình nha, xin 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
Nguyen Hoanh 4670 Báo cáo bài đăng Đã đăng Tháng 8 5, 2007 Em đang cần 1 lisp có nội dung như sau:trên màn hình có text là ABCD khi chạy lisp sẽ chọn text và điểm chèn kết quả trên màn hình sẽ có các dòng kết quả sau: có 4 kí tự lần lượt là: A, B, C, D trong text trên với kí tự A ở vị trí 1 với kí tự B ở vị trí 2 với kí tự C ở vị trí 3 với kí tự D ở vị trí 4 Bạn có thể upload lên 1 file mẫu không? ------------------------------------------------------------------------------------------ Tìm lisp lấy ra được giá trị width(độ rộng) của polylinenhư sau: chọn 1 pline có trên màn hình, sau đó nhập điểm chèn kết quả cho ra giá trị là số của độ rộng đường polyline. Anh em nào có cho mình nha, xin cám ơn! Lệnh là PW (print width) (defun c:pw ( / tmp) (princ "\nPW (c) CADViet.com") (entmake (list (cons 0 "TEXT") (cons 1 (rtos (cdr (assoc 40 (entget (car (entsel "\nPick vao Pline: ")))))2 2)) (cons 10 (setq tmp (getpoint "\nVao diem chen cua chu: "))) (cons 40 (getdist tmp "\nVao chieu cao cua chu: ")) ) ) (princ) ) (princ "\nPW - free lisp from www.CADViet.com") (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
xaydung 12 Báo cáo bài đăng Đã đăng Tháng 8 6, 2007 Cám ơn bác hoành, em đang cần 1 lisp khác có nội dung giống như lisp caltext có trong diễn đàn nhưng ở đây nó chọn nhiều text 1 lúc chứ không chọn đơn lẻ 1 text. bác giúp em 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
Nguyen Hoanh 4670 Báo cáo bài đăng Đã đăng Tháng 8 6, 2007 Cám ơn bác hoành, em đang cần 1 lisp khác có nội dung giống như lisp caltext có trong diễn đàn nhưng ở đây nó chọn nhiều text 1 lúc chứ không chọn đơn lẻ 1 text. bác giúp em nha! Trên diễn đàn có đến mấy lệnh caltext, cái bạn nói là cái nào, bạn có thể paste ra đây đượ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
xaydung 12 Báo cáo bài đăng Đã đăng Tháng 8 6, 2007 (defun c:caltext (/ ent tt old gt vt gtmoi) (if (not c:cal) (load "geomcal.arx") ) (setq ent (car (entsel "\nHay pick vao doi tuong text: ")) tt (entget ent) old (assoc 1 tt) gt (cdr old) vt (vl-string-position (ascii "=") gt) gtmoi (substr gt 1 vt) kq (rtos (c:cal gtmoi)) kq (vl-string-right-trim "0" kq) kq (vl-string-right-trim "." kq) gtmoi (strcat gtmoi "=" kq) tt (subst (cons 1 gtmoi) old tt) ) (entmod tt) (entupd ent) (princ) ) Là cái này 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
Nguyen Hoanh 4670 Báo cáo bài đăng Đã đăng Tháng 8 6, 2007 Là cái này bác à! Tên lênh là MCALTEXT. (defun c:mcaltext (/ ent tt old gt vt gtmoi) (if (not c:cal) (load "geomcal.arx") ) (defun calone (ent) (setq tt (entget ent) old (assoc 1 tt) gt (cdr old) vt (vl-string-position (ascii "=") gt) gtmoi (substr gt 1 vt) kq (rtos (c:cal gtmoi)) kq (vl-string-right-trim "0" kq) kq (vl-string-right-trim "." kq) gtmoi (strcat gtmoi "=" kq) tt (subst (cons 1 gtmoi) old tt) ) (entmod tt) (entupd ent) ) (setq ss (ssget '((0 . "TEXT")))) (sudung calone ss) (princ) ) (defun sudung (ham ss / sodt index entdt soapp) (setq sodt (cond (ss (sslength ss)) (t 0) ) soapp 0 index 0 ) (repeat sodt (setq entdt (ssname ss index) index (1+ index) ) (if (ham entdt) (setq soapp (1+ soapp)) ) ) soapp ) 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
tienlagiay_dxt 186 Báo cáo bài đăng Đã đăng Tháng 8 6, 2007 Bạn có thể post yêu cầu về autolisp ở topic này. Mình muốn nhờ Hoành viết 1 líp tạo các layer ,các layer này sẽ được khai báo đầy đủ các thuộc tính như đường nét, màu sắc, độ rộng. Thank trước 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
Nguyen Hoanh 4670 Báo cáo bài đăng Đã đăng Tháng 8 6, 2007 Mình muốn nhờ Hoành viết 1 líp tạo các layer ,các layer này sẽ được khai báo đầy đủ các thuộc tính như đường nét, màu sắc, độ rộng.Thank trước nhé Bạn nêu ví dụ đ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
kts.ngocquan 37 Báo cáo bài đăng Đã đăng Tháng 8 6, 2007 Này tienlagiay_dxt cái mà ông cần đấy a4 la tên lệnh Các tên layer tự thay nhé (Defun c:a4 (/) (command "cmdecho" 0) (command "units" "2" "0" "1" "0" "" "") (Command "-linetype" "l" "center" "acad.lin" "" "") (Command "-linetype" "l" "hidden" "acad.lin" "" "") (Command "-layer" "n" "35 - Cat 1 (Tuong..)" "c" "53" "35 - Cat 1 (Tuong..)" "lw" "0.35" "35 - Cat 1 (Tuong..)" "") (Command "-layer" "n" "25 - Cat 2 (Khuon..)" "c" "164" "25 - Cat 2 (Khuon..)" "lw" "0.25" "25 - Cat 2 (Khuon..)" "") (Command "-layer" "n" "15 - Thay 1" "c" "93" "15 - Thay 1" "lw" "0.15" "15 - Thay 1" "") (Command "-layer" "n" "09- Thay 3" "c" "254" "09- Thay 3" "lw" "0.10" "09- Thay 3" "") (Command "-layer" "n" "05- Thay 2" "c" "25" "05- Thay 2" "lw" "0.05" "05- Thay 2" "") (Command "-layer" "n" "09 - Tim " "c" "117" "09 - Tim " "l" "center" "09 - Tim " "lw" "0.09" "09 - Tim " "") (Command "-layer" "n" "05 - Mo 1" "c" "67" "05 - Mo 1" "lw" "0.05" "05 - Mo 1" "") (Command "-layer" "n" "05 - Mo 2" "c" "8" "05 - Mo 2" "lw" "0.05" "05 - Mo 2" "") (Command "-layer" "n" "05 - Mo 3" "c" "103" "05 - Mo 3" "lw" "0.05" "05 - Mo 3" "") (Command "-layer" "n" "05 - Noi that" "c" "16" "05 - Noi that" "lw" "0.05" "05 - Noi that" "") (Command "-layer" "n" "09 - Kich thuoc" "c" "45" "09 - Kich thuoc" "lw" "0.09" "09 - Kich thuoc" "") (Command "-layer" "n" "05 - Khuat 1" "c" "22" "05 - Khuat 1" "l" "Dashed2" "05 - Khuat 1" "lw" "0.05" "05 - Khuat 1" "") (Command "-layer" "n" "09 - Khuat 2" "c" "30" "09 - Khuat 2" "l" "Dashed" "09 - Khuat 2" "lw" "0.09" "09 - Khuat 2" "") ) 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