Tue_NV 3.912 Báo cáo bài đăng Đã đăng Tháng 11 18, 2008 chào các bạn, mong các bạn jup đỡ. mình cần 1 lisp có thể làm như sau : mình hay phải sửa bản vẽ của dân kiến trúc, họ hay vẽ mặt cắt với cỡ chữ rất to.khi mình cho nhỏ lại thì các chữ cách nhau rất xa (6 6) và phải chỉnh cho gan lại (6 6) (có rất nhiều mặt cắt => sửa rất nhiều lần ) các bạn có thể cho mình 1 lisp mỗi khi click vào mặt cắt ( ví dụ 6 6 ) nó sẽ tự cho gần lại với khoảng cách do mình chọn đuợc kô nếu làm được với muti nữa thì tốt wa, cảm ơn các bạn rất nhiều. hình ảnh minh hoạ http://www.cadviet.com/upfiles/untitled_85.jpg Đầu tiên, có thể bạn sử dụng lệnh Tjust để chuyển một chữ căn lề trái, một chữ căn lề phải ( mà không bị thay đổi vị trí của text) theo bạn Nataca. Hoặc có thể bạn không dùng cũng được. sau này bạn move ra một chút . Và bạn sử dụng đoạn Code của mình để thực hiện ý muốn của mình. Dưới đây là Code : ;;;;;; (defun C:SCC () (prompt "Ban chon doi tuong text :") (princ "\nSelect object :") (setq obj (ssget)) (setq c1 (getdist "Cho khoang cach 2 text dau :")) (terpri) (setq c2 (getdist "Cho khoang cach 2 text cuoi :")) (terpri) (setq base (getpoint "Diem giua 2 text :")) (terpri) (setq TL (/ C2 C1)) (command "scale" obj "" base TL) (tt) ) ;;; -------------------------------------------------------------------------- ;;; Thay doi chieu cao TEXT: (DEFUN TT (/ G A B C D E F) (SETVAR "CMDECHO" 0) (INITGET 1 "S H ") (SETQ G (STRCASE (SUBSTR (getkword "Height/: ")1 1))) (COND ((OR (= G "S") (= G " ")) (SETQ A (SSGET "p")) (SETQ B (SSLENGTH A)) (INITGET 7) (SETQ C (GETDIST "\nKich thuoc TEXT moi: ")) (WHILE (> B 0) (SETQ B (1- B)) (SETQ D (SSNAME A B)) (SETQ D (ENTGET D)) (IF (= "TEXT" (CDR (ASSOC 0 D))) (PROGN (SETQ E (ASSOC 40 D)) (SETQ F (CONS 40 C)) (ENTMOD (SETQ D (SUBST F E D))))) ) (SETQ A NIL) ) ((= G "H") (INITGET 7) (SETQ A (GETDIST "\Chieu cao loai Texts can thay doi: ")) (SETQ B (FIX (* 100 A))) (INITGET 7) (SETQ C (GETDIST "\Thay doi chieu cao thanh: ")) (SETQ D (ENTNEXT)) (SETQ E (CONS 40 C)) (WHILE D (PRINC "-> ") (SETQ F (ASSOC 0 (ENTGET D))) (IF (= "TEXT" (CDR F)) (PROGN (SETQ F (ASSOC 40 (ENTGET D))) (SETQ G (FIX (* 100 (CDR F)))) (IF (= B G) (ENTMOD (SUBST E F (ENTGET D))) ) ) ) (SETQ D (ENTNEXT D)) ) ) ) (PRINC) ) ;;; --------------------------------------------------------------------------- Để mình giải thích . Đoạn code trên dựa trên lệnh scale với điểm chèn là trung điểm của đường thẳng nối 2 text. Và tỉ lệ của lệnh Scale trên bằng khoảng cách 2 text đầu (chữ to) chia cho khoảng cách 2 text cuoi (là khoảng cách do mình chọn lúc cuối cùng) Mục đích là để thu hẹp khoảng cách của 2 text. Sau đó sử dụng hàm tt để thay đổi chiều cao của 2 text đó : Ở dòng lệnh : Height/Select: Nếu bạn chọn S thì : chương trình bảo bạn nhập kích thước text mới Nếu bạn chọn H thì : chương trình bảo bạn chọn Chieu cao loai Texts can thay doi và chiều cao text thay doi chieu cao thanh: Trong trường hợp này bạn nên chọn S Còn bạn muốn thực hiện lệnh là multiple thì bạn hãy gõ Command : multiple Enter command name to repeat: scc .... Bạn có thể thiết lập lệnh tắt multiple trong file acad.pgp Nhớ thanks ủng hộ nhé. Chúc vui :leluoi: 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
hhhhgggg 29 Báo cáo bài đăng Đã đăng Tháng 11 23, 2008 Các bác ui ! Viết giúp em cái Lisp đổi font chữ của các Style,Em hay làm NOVA cần đổi Font của Style " Chuso" và "Standar" sang Font .VNarial Narrow . Và đổi Font của Style tên cọc và Style "Tieude","Tencoc" thành Font .VNarial NarrowH.( Font ban đầu của nó là TXT.SHX) .Các bác viết júp em nhé . 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 4.663 Báo cáo bài đăng Đã đăng Tháng 11 23, 2008 Các bác ui ! Viết giúp em cái Lisp đổi font chữ của các Style,Em hay làm NOVA cần đổi Font của Style " Chuso" và "Standar" sang Font .VNarial Narrow . Và đổi Font của Style tên cọc và Style "Tieude","Tencoc" thành Font .VNarial NarrowH.( Font ban đầu của nó là TXT.SHX) .Các bác viết júp em nhé . Thanks !! bạn đã dùng thử lệnh STYLE chưa? bạn có thể upload file mẫu lên diễn đàn đượ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
xuanhai 6 Báo cáo bài đăng Đã đăng Tháng 11 25, 2008 Mình tìm trên diễn đàn có lisp tính tổng số các Text, ai có thể cho mình xin trừ Text được không? vi du: 6 - 3 = 3, 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
Tue_NV 3.912 Báo cáo bài đăng Đã đăng Tháng 11 25, 2008 Mình tìm trên diễn đàn có lisp tính tổng số các Text, ai có thể cho mình xin trừ Text được không?vi du: 6 - 3 = 3, cám ơn nhiều. Bạn có thê upload file lisp tính tổng số các Text của bạn đượ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
duy782006 1.549 Báo cáo bài đăng Đã đăng Tháng 11 25, 2008 Mình tìm trên diễn đàn có lisp tính tổng số các Text, ai có thể cho mình xin trừ Text được không?vi du: 6 - 3 = 3, cám ơn nhiều. Bạn dùng lisp thêm dấu trừ phía trước các số muốn trừ rồi dùng lisp cộng như bình thườ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
tuanlongtl 5 Báo cáo bài đăng Đã đăng Tháng 11 25, 2008 đoạn code này sai ở chỗ nào vậy các bạn? Ai biết xin chỉ giáo dùm (defun c:vtd () (setq n 1) (setq pt1 (list 0 0)) (repeat 10 (setq pt2 (list n (+ n 0.5))) (setq n (1+ n)) (command "line" pt1 pt2 " ") ) (command "zoom" "e") ) Ai 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.663 Báo cáo bài đăng Đã đăng Tháng 11 25, 2008 đoạn code này sai ở chỗ nào vậy các bạn? Ai biết xin chỉ giáo dùmAi Đây là mục viết lisp theo yêu cầu. Bạn hãy post câu hỏi của bạn ở mục hỏi về lisp 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
xuanhai 6 Báo cáo bài đăng Đã đăng Tháng 11 25, 2008 Bạn có thê upload file lisp tính tổng số các Text của bạn được không? File đây bạn, giúp gìm nhé. http://www.cadviet.com/upfiles/2_3.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 3.912 Báo cáo bài đăng Đã đăng Tháng 11 25, 2008 File đây bạn, giúp gìm nhé.http://www.cadviet.com/upfiles/2_3.dwg Mình nói bạn upload file Lisp chứ đâu phải nói upload file dwg đâu. Bạn có thê upload file lisp tính tổng số các Text lên đay nhé. Bạn có thể mở file lisp đó của bạn ra và làm theo hướng dẫn của bạn duy782006 Bạn dùng lisp thêm dấu trừ phía trước các số muốn trừ rồi dùng lisp cộng như bình thườ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
xuanhai 6 Báo cáo bài đăng Đã đăng Tháng 11 25, 2008 Mình nói bạn upload file Lisp chứ đâu phải nói upload file dwg đâu.Bạn có thê upload file lisp tính tổng số các Text lên đay nhé. Bạn có thể mở file lisp đó của bạn ra và làm theo hướng dẫn của bạn duy782006 File lisp đây, xin lỗi nhé, mình làm theo bạn Duy thì mắc công quá, mỗi lần làm phải thêm dấu - không tiện vì mình làm nhiều số lắm. Đây là file tính tổng, bạn sửa lại thành trừ giúp mình, thank. http://www.cadviet.com/upfiles/Add_1_1.lsp 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 3.146 Báo cáo bài đăng Đã đăng Tháng 11 25, 2008 Mình tìm trên diễn đàn có lisp tính tổng số các Text, ai có thể cho mình xin trừ Text được không?vi du: 6 - 3 = 3, cám ơn nhiều. Cái nhà bác này nói khó hiểu quá, Trừ Text nghĩa là thế nào nhỉ? Đếm số text trong một bản vẽ rồi trừ đi hay sao? Hay là có một chuỗi text, bạn muốn cắt đi vài chữ cái trong đó??? Ví dụ của bác lại là một phép tính trừ?? Hay bác muốn lisp biểu diễn phép tính trừ theo kiểu text : Sáu trừ ba bằng ba ???? hu hu khó hiểu quá. 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
xuanhai 6 Báo cáo bài đăng Đã đăng Tháng 11 25, 2008 Cái nhà bác này nói khó hiểu quá,Trừ Text nghĩa là thế nào nhỉ? Đếm số text trong một bản vẽ rồi trừ đi hay sao? Hay là có một chuỗi text, bạn muốn cắt đi vài chữ cái trong đó??? Ví dụ của bác lại là một phép tính trừ?? Hay bác muốn lisp biểu diễn phép tính trừ theo kiểu text : Sáu trừ ba bằng ba ???? hu hu khó hiểu quá. Đơn giản thôi mà, có lisp tính tổng ở trên, mình chỉ muốn sửa lại để làm tính trừ thôi. Vd: lisp tổng ở trên tính là 6 + 3 = 9, mình muốn sửa lại lisp trên thành 6 - 3 = 3. 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
meohoang 344 Báo cáo bài đăng Đã đăng Tháng 11 25, 2008 Đơn giản thôi mà, có lisp tính tổng ở trên, mình chỉ muốn sửa lại để làm tính trừ thôi.Vd: lisp tổng ở trên tính là 6 + 3 = 9, mình muốn sửa lại lisp trên thành 6 - 3 = 3. cám ơn. Chân thành góp ý bạn nhé: 1-Phép toán tổng đã bao hàm hiệu. Muốn hiệu thì biến của người dùng nhập phải âm 2-Bạn đừng cho là mất công vì việc nhấn đúp text để thêm dấu - là việc cần thiết; nếu ko riết 1 hồi mãi mê làm quay lại kiểm tra bạn biết số nào là hiệu của các số và ngược lại? 3-Nếu bạn chỉ thuần dùng phép trừ thì mở file trong Notepad dùng lệnh thay ký tự + thành ký tự -. Hic nhưng mà về mặt thuật toán lập trình thì có vẽ nhiêu khê. 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
xuanhai 6 Báo cáo bài đăng Đã đăng Tháng 11 25, 2008 Chân thành góp ý bạn nhé:1-Phép toán tổng đã bao hàm hiệu. Muốn hiệu thì biến của người dùng nhập phải âm 2-Bạn đừng cho là mất công vì việc nhấn đúp text để thêm dấu - là việc cần thiết; nếu ko riết 1 hồi mãi mê làm quay lại kiểm tra bạn biết số nào là hiệu của các số và ngược lại? 3-Nếu bạn chỉ thuần dùng phép trừ thì mở file trong Notepad dùng lệnh thay ký tự + thành ký tự -. Hic nhưng mà về mặt thuật toán lập trình thì có vẽ nhiêu khê. Cám ơn, mình đã làm được 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
loiphong 0 Báo cáo bài đăng Đã đăng Tháng 11 25, 2008 Xin chào mọi người! Có thể viết giúp mình Lisp với ứng dụng như sau: - Dùng window quét một biên dạng bất kì (chủ yếu xuất từ 3D qua) sẽ lấy được (Xmax,Ymax) và (Xmin,Ymin) của biên dạng đó.(Biên dạng là tập hơp nhiều line, spline.... được xuất từ 3D qua.) Mụch đích: Sử dụng để cắt phôi trong thiết kế khuôn mẫ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
romeo1982 19 Báo cáo bài đăng Đã đăng Tháng 11 27, 2008 Bạn có thể post yêu cầu về autolisp ở topic này. Bác Hoành oi cho tôi xin 1 cái líp như vầy: chọn 1 đối tượng rồi mình ra lệnh thì cad tự tạo 1 layẻ mới và gán đối tượng mình chọn cho layẻ mới tạo, 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
Tue_NV 3.912 Báo cáo bài đăng Đã đăng Tháng 11 27, 2008 Bác Hoành oi cho tôi xin 1 cái líp như vầy: chọn 1 đối tượng rồi mình ra lệnh thì cad tự tạo 1 layẻ mới và gán đối tượng mình chọn cho layẻ mới tạo, xin cám ơn. Mình không hiểu ý bạn. Đối tượng có rất nhiều thuộc tính. Bạn gán như thế nào? Có thể nói rõ hơn 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
romeo1982 19 Báo cáo bài đăng Đã đăng Tháng 11 27, 2008 Mình không hiểu ý bạn. Đối tượng có rất nhiều thuộc tính.Bạn gán như thế nào? Có thể nói rõ hơn không? cám ơn bạn đã quan tâm, đơn giản là đưa đối tượng đó về layer vừa tạo thui 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 11 27, 2008 cám ơn bạn đã quan tâm, đơn giản là đưa đối tượng đó về layer vừa tạo thui Bạn dùng đoạn code này nhé : (defun c:DLM () (prompt "Doi cac doi tuong chon sang layer moi ") (princ "\n Change: Doi sang layer moi") (setq tue (ssget)) (if (null tue) (progn (princ "\nLoi : Khong co doi tuong nao duoc chon.") (exit) ) ) (command "layer" "m" "Newlayer" "c" "3" "" "" "") (command "_.change" tue "" "P" "la" "newlayer" "") (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
duy782006 1.549 Báo cáo bài đăng Đã đăng Tháng 11 27, 2008 làm theo bạn Duy thì mắc công quá, mỗi lần làm phải thêm dấu - không tiện vì mình làm nhiều số lắm. Mình nói dùng líp thêm dấu trừ nghĩa là có líp làm việc này. Bạn xem ở đây. NÓ làm cho nhiều text 1 lúc đó bạn. http://www.cadviet.com/forum/index.php?showtopic=6991 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
romeo1982 19 Báo cáo bài đăng Đã đăng Tháng 11 27, 2008 Bạn dùng đoạn code này nhé : (defun c:DLM () (prompt "Doi cac doi tuong chon sang layer moi ") (princ "\n Change: Doi sang layer moi") (setq tue (ssget)) (if (null tue) (progn (princ "\nLoi : Khong co doi tuong nao duoc chon.") (exit) ) ) (command "layer" "m" "Newlayer" "c" "3" "" "" "") (command "_.change" tue "" "P" "la" "newlayer" "") (princ) ) Bạn xem giùm mình file này có vấn đề gì mà load vào cad xài ko được, 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
romeo1982 19 Báo cáo bài đăng Đã đăng Tháng 11 27, 2008 Bạn xem giùm mình file này có vấn đề gì mà load vào cad xài ko được, thanks Quên, file đêy http://www.cadviet.com/upfiles/DLM_ch7885n...ayer_m7899i.lsp 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
gia_bach 1.550 Báo cáo bài đăng Đã đăng Tháng 11 27, 2008 Các bác ơi mình học và làm vơi autoCAD lâu lắm rồi nhưng mình mới làm quen với lisp nên mình thấy lisp khó kiểmt ra lỗi quá các bác đi trước có kinh nghiệm chỉ mình cách sửa lỗi nhanh nhất với xin cảm ơn các bác rất nhiều Để kiểm tra lỗi chính tả, bạn có thể dùng Vlide của Cad (gõ vlide tại dấu nhắc lệnh). Vào Tool->Check text in Editor Trong LISP có hàm *error* để bẫy lỗi, cách dùng bạn có thể tham khảo tại : http://www.cadviet.com/forum/index.php?sho...24&hl=error 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 11 27, 2008 Quên, file đêyhttp://www.cadviet.com/upfiles/DLM_ch7885n...ayer_m7899i.lsp File này chẳng có lỗi gì 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