Jump to content
InfoFile
Tác giả: duongthanh85
Bài viết gốc: 70231
Tên lệnh: tm2
Lisp bị lỗi khi gán giá trị text cộng dồn

Chương trình có ý tưởng như sau:
Chọn các text bởi chuột theo thứ tự mong muốn, nhấn enter để kết thúc việc lựa chọn. Gán tất cả giá trị text này vào 1 biến trong vòng lặp cách nhau bởi dấu TAB. Kết thúc ghi ra 1 dòng vào file text.

http://img.photobucket.com/albums/v221/duongdinhthanhbk85/123.jpg

Như với hình này sẽ chọn lần lượt a,b,c... sau đó đo chiều dài; khi em làm không có...
>>
Chương trình có ý tưởng như sau:
Chọn các text bởi chuột theo thứ tự mong muốn, nhấn enter để kết thúc việc lựa chọn. Gán tất cả giá trị text này vào 1 biến trong vòng lặp cách nhau bởi dấu TAB. Kết thúc ghi ra 1 dòng vào file text.

http://img.photobucket.com/albums/v221/duongdinhthanhbk85/123.jpg

Như với hình này sẽ chọn lần lượt a,b,c... sau đó đo chiều dài; khi em làm không có vòng lặp while chọn text - tức chỉ chọn 2 text- thì chạy ngon lành.

Khi thêm vòng lặp để chọn nhiều text, chạy thử tới bước chọn tới đối tượng thứ 2 thì bị lỗi, lỗi báo như sau:



Lisp em viết như sau:

Trong lisp này có sử dụng code tham khảo từ cadviet)



Mong các huynh xem giùm em xem em viết sai đoạn nào và cần sửa ra sao?
Em cám ơn nhiều.
<<

Filename: 70231_tm2.lsp
Tác giả: hochoaivandot
Bài viết gốc: 189570
Tên lệnh: mbl
đổi màu block reference và file xref


Lisp sau có chức năng Đổi màu Block (Cái này mình tham khảo lisp từ đâu đó và thêm tí mắm tí muối thôi). Hi vọng đúng ý bạn
http://i1194.photobucket.com/albums/aa362/hochoaivandot/Block/Mbl.gif

(defun err-ubc (s)
(if (/= s "Function cancelled")
(princ (strcat "\nError: " s))
)
(setq *error* olderr)
(princ)
)
(DEFUN C:mbl (/ BLK CBL CBL2 C ACL ALY NLY NCL)
>>


Lisp sau có chức năng Đổi màu Block (Cái này mình tham khảo lisp từ đâu đó và thêm tí mắm tí muối thôi). Hi vọng đúng ý bạn
http://i1194.photobucket.com/albums/aa362/hochoaivandot/Block/Mbl.gif

(defun err-ubc (s)
(if (/= s "Function cancelled")
(princ (strcat "\nError: " s))
)
(setq *error* olderr)
(princ)
)
(DEFUN C:mbl (/ BLK CBL CBL2 C ACL ALY NLY NCL)
(setq olderr *error* *error* err-ubc)
(setq C (acad_colordlg 1))
(PROMPT "\n >Chon Blocks se thay doi mau: ")
(SETQ SS (SSGET '((0 . "INSERT"))))
(SETQ K 0)
(WHILE (< K (SSLENGTH SS))
(setq CBL (tblsearch "BLOCK" (CDR (ASSOC 2 (ENTGET (SETQ BLK (SSNAME SS K)))))))
(SETQ CBL2 (CDR (ASSOC -2 CBL)))
(WHILE (BOUNDP 'CBL2)
(SETQ EE (ENTGET CBL2))
(SETQ NCL (CONS 62 C))
(SETQ ACL (ASSOC 62 EE))
(IF (= ACL nil)
(SETQ NEWE (APPEND EE (LIST NCL)))
(SETQ NEWE (SUBST NCL ACL EE))
)
(ENTMOD NEWE)
(SETQ CBL2 (ENTNEXT CBL2))
)
(ENTUPD BLK)
(SETQ K (1+ K))
)
(setq *error* olderr)
)

<<

Filename: 189570_mbl.lsp
Tác giả: elleHCSC
Bài viết gốc: 76728
Tên lệnh: cc
Hỏi cách đổi màu đối tượng trong CAD?
Các bạn test cái elleHCSC viết xem nhé, mình chạy thấy nó ổn:

Filename: 76728_cc.lsp
Tác giả: xaakiii_mboet
Bài viết gốc: 79758
Tên lệnh: nsmc
Viết lisp theo yêu cầu [phần 2]



Vậy bạn nào có nhu cầu như em thì dùng lại cái mã em đã MODY... của Bác ThanhBinh, và chơi cách thứ ba (của B.Hoành vẽ). Thì dù sao trước khi nội suy mình cũng phải xén cho hai cái mặt cắt có bề rộng bằng nhau còn gì:
Đoạn mã em thêm chút mắm múi cho các bạn "kém như em".......


;========================

Filename: 79758_nsmc.lsp
Tác giả: Nguyen Hoanh
Bài viết gốc: 5074
Tên lệnh: n2text
Lisp chọn 2 text cho ra 1 điểm toạ độ

Bạn phải làm 2 lần thôi!

lần thứ nhất, biến 2 text trên 1 dòng thành 1 chữ (bằng lệnh T2P).
Lần thứ 2, dùng lệnh n2text của lisp dưới đây để nối 2 text lại:

Filename: 5074_n2text.lsp
Tác giả: Nguyen Hoanh
Bài viết gốc: 5038
Tên lệnh: t2p
Lisp chọn 2 text cho ra 1 điểm toạ độ


Tên lệnh vẫn là T2P.


Filename: 5038_t2p.lsp
Tác giả: phamthanhbinh
Bài viết gốc: 189697
Tên lệnh: kbg
vẽ độ dốc

Hề hề hề,
Bạn hãy tham khảo cái này coi đã gần đúng ý bạn chưa nhé.

Chúc bạn vui.

Filename: 189697_kbg.lsp
Tác giả: thanhlam03xt
Bài viết gốc: 189695
Tên lệnh: dbdd
vẽ độ dốc
Mình có cái lisp đánh bóng độ dốc tìm được trên diễn đàn nhưng chưa phù hợp với công việc của mình nên hôm nay nhờ các cao thủ trên diễn đàn giúp đỡ
lisp:


Mong các cao thủ co thể chính sửa giúp để có thề thực hiện được các thao tác như file đính kèm:
http://www.mediafire...t4scpdcd60icq1k

Filename: 189695_dbdd.lsp
Tác giả: Nguyen Hoanh
Bài viết gốc: 31821
Tên lệnh: xd
Viết Lisp theo yêu cầu


file lisp dưới đây đã cải tiến, sẽ dùng được với cả hai bên, với điều kiện là bạn phải dùng block "B-D" mà tôi đã move text vào tâm.
file dwg có chứa block "B-D" đã sửa đổi: http://www.cadviet.com/upfiles/bvdo.zip


email của tôi là: nguyenhoanh@cadviet.com

Filename: 31821_xd.lsp
Tác giả: phamthanhbinh
Bài viết gốc: 189744
Tên lệnh: kbg
vẽ độ dốc

Hề hề hề,
Vậy có phải tốt hơn không???
Sở dĩ bạn có kết quả như trên vì bạn chưa hiểu hết nội dung của lisp mà thôi. Do lisp này viết theo yêu cầu của một người khác nên trình tữ thao tác không hoàn toàn giống như ý bạn. Tuy nhiên nó vẫn hoàn toàn có thể sử dụng cho yêu cầu của bạn nếu bạn lưu ý những điểm như sau: (điều này đã được đề cập trong topic của...
>>

Hề hề hề,
Vậy có phải tốt hơn không???
Sở dĩ bạn có kết quả như trên vì bạn chưa hiểu hết nội dung của lisp mà thôi. Do lisp này viết theo yêu cầu của một người khác nên trình tữ thao tác không hoàn toàn giống như ý bạn. Tuy nhiên nó vẫn hoàn toàn có thể sử dụng cho yêu cầu của bạn nếu bạn lưu ý những điểm như sau: (điều này đã được đề cập trong topic của chủ thớt trước, bạn hãy tìm lại để đọc nhé)
1/- Khi chọn đường biên thứ nhất bạn phải chọn đúng về phía diểm bắt đầu củ đường chuẩn và đường biên thứ hai nằm về phía điểm cuối của đường kẻ chuẩn. Do trật tự chọn này của bạn chưa đúng nên các đường kẻ bon1ng (hay kẻ dốc như bạn gọ) sẽ bị hoặc là không cắt hoặc là cắt sai. Trong trường hợp đó đơn giản là bạn chỉ cần uondo và chọn lại đường biên theo thứ tự ngược lại là Ok.
2/- Khi chọn hướng kẻ bóng, thực chất điểm chọn sẽ là điểm giới hạn của các đường kẻ bóng thay cho việc chọn đường giới hạn của bạn. Vì thế khi điểm chọn của bạn nằm bên trong khung thì lisp chỉ kẻ các đường kẻ bóng tới khi đường kẻ tiếp theo sẽ nằm ngoài điểm giới hạn này, còn nếu điểm chọn của bạn nằm ngoài khung đủ lớn thì các đường kẻ bóng sẽ được kẻ vươt ra bên ngoài khung cho tới khi đạt tới điểm giớ hạn đó. (trong trường hợp này các đường kẻ nằm ngoài khung sẽ có chung độ dài như đường kẻ bóng cuối cùng trong khung). Với yêu cầu như bạn thì đơng giản chỉ là khi lisp yêu cầu chọn hướng rải đường kẻ bóng bạn chỉ cần pick một điểm bất kỳ nằm trên cái đường giớ hạn của bạn là Ok, và như vậy bạn cũng chả cần tới việc chọn đường giới hạn làm chi nữa.
3/- Yêu cầu bỏ qua bước nhập tên lớp mình đã bổ sung theo cách nếu bạn muốn bỏ qua thì khi lisp hỏi bạn cứ nhấn enter. Sở dĩ mình vẫn để bước lisp hỏi này là để nhỡ có lúc bạn lại cần đưa các dường kẻ bóng này vào một lớp riêng biệt nào đó như bạn chủ thớt trước thì có cái mà dùng.
4/- Việc các đường kẻ bóng cần phải là màu 8 mình cũng đã bổ sung vào lisp. Nhưng việc chọn chiều dày nét vẽ là 0.9 như bạn yêu cầu thì mình chưa làm. Việc này bạn có thể tự làm được với việc sử dụng lệnh change - Thickness
5/- Về trình tự thao tác nhập dữ liệu cho lisp có thể khác với cái trình tự bạn yêu cầu, nhưng mình nghĩ bạn hoàn toàn có thể thay đổi lại cho phù hợp được nên mình cũng không sửa nữa do lười và cũng không dư nhiều thời gian. Vậy mong bạn thông cảm.

Đây là cái lisp trước mình đã chỉnh sửa chút xíu cho phù hợp với những điều bạn yêu cầu nhưng không hoàn toàn đúng như đã giải thích ở trên. Bạn hãy dùng thử và lưu ý các điểm 1,2 ở trên xem đã trúng với cái bạn cần chưa nhé.



Chúc bạn vui khi tham gia diễn đàn và mong bạn lưu ý các quy định chung của diễn đàn bạn nhé.
<<

Filename: 189744_kbg.lsp
Tác giả: Nguyen Hoanh
Bài viết gốc: 19554
Tên lệnh: cc
Viết Lisp theo yêu cầu


Tên lệnh là CC:


Filename: 19554_cc.lsp
Tác giả: Nguyen Hoanh
Bài viết gốc: 19566
Tên lệnh: cc1
Viết Lisp theo yêu cầu


Lệnh CC1 dưới đây là cải tiến của lệnh CC, đáp ứng được yêu cầu của bạn:

Filename: 19566_cc1.lsp
Tác giả: ssg
Bài viết gốc: 20038
Tên lệnh: scc
Viết Lisp theo yêu cầu

Bạn dùng thử lisp này. Tên lệnh SCC:


Chú ý:
1) Phải chọn cả các đối tượng dim khi chương trình yêu cầu select objects
2) Dim không bị "độ chế", tức là đã bị sửa Dim scale linear trong properties

Filename: 20038_scc.lsp
Tác giả: Tue_NV
Bài viết gốc: 55059
Tên lệnh: bcn
Viết Lisp theo yêu cầu

Bạn thử dùng đoạn Lisp này xem :

Hy vọng bạn hài lòng.
Chúc thành công nhé :cry:

Filename: 55059_bcn.lsp
Tác giả: q288
Bài viết gốc: 66701
Tên lệnh: ist
Viết Lisp theo yêu cầu


Trước đây mình có viết cái này gần giống với yêu cầu của bạn, bạn dùng thử xem. Nó dùng cho các loại đường, k0 riêng gì pline.

Filename: 66701_ist.lsp
Tác giả: Tue_NV
Bài viết gốc: 67639
Tên lệnh: sxtext
Viết Lisp theo yêu cầu

Lisp này sẽ sắp xếp cả Text lẫn MTEXT
:s_dead:
@conghoan : Bạn hãy thử chạy file Lisp này. Nếu không được nữa thì Tue_NV đành .... bó tay. Vì mình đã test file của bạn rất OK
File đây conghoan test thử nhé. http://www.cadviet.com/upfiles/VBUN7.vlx
Conghoan nhớ rằng Lisp sẽ hiện sáng đối...
>>

Lisp này sẽ sắp xếp cả Text lẫn MTEXT
:s_dead:
@conghoan : Bạn hãy thử chạy file Lisp này. Nếu không được nữa thì Tue_NV đành .... bó tay. Vì mình đã test file của bạn rất OK
File đây conghoan test thử nhé. http://www.cadviet.com/upfiles/VBUN7.vlx
Conghoan nhớ rằng Lisp sẽ hiện sáng đối tượng và bạn phải chọn điểm đầu và điểm cuối trên đối tượng hiện sáng đó nhé.
<<

Filename: 67639_sxtext.lsp
Tác giả: Tue_NV
Bài viết gốc: 119163
Tên lệnh: clen
Hiệu chỉnh chiều dài của đoạn thẳng !!!

Bạn sử dụng cái này thử nhé :

Filename: 119163_clen.lsp
Tác giả: Jin Yong
Bài viết gốc: 7939
Tên lệnh: cadvietlisp%252
Lập trình cho Excel
IV. Làm việc với dữ liệu.

Bao gồm đọc (load, get…), xử lý, và xuất kết quả.
Tuỳ thuộc vào nguồn của dữ liệu (thu thập bằng tay, bằng các chương trình khác hay SAP hoặc ETABS) mà dữ liệu có thể là: nằm ngay trong một Sheet của Excel, nằm trong một file text (*.txt), hoặc nằm trong file database (*.mdb). Sau đây xin giới thiệu về cách đọc và xuất dữ liệu với 3 dnạg thông...
>>
IV. Làm việc với dữ liệu.

Bao gồm đọc (load, get…), xử lý, và xuất kết quả.
Tuỳ thuộc vào nguồn của dữ liệu (thu thập bằng tay, bằng các chương trình khác hay SAP hoặc ETABS) mà dữ liệu có thể là: nằm ngay trong một Sheet của Excel, nằm trong một file text (*.txt), hoặc nằm trong file database (*.mdb). Sau đây xin giới thiệu về cách đọc và xuất dữ liệu với 3 dnạg thông thường này.
1. Đọc và xuất dữ liệu từ một Sheet


<<

Filename: 7939_cadvietlisp%252.lsp
Tác giả: ssg
Bài viết gốc: 43449
Tên lệnh: ctm
Xin mọi người giúp đỡ Lisp Center mark.
@ttmt_jses:
Bạn dùng thử lisp đánh center mark cho hàng loạt đường tròn. Lệnh CTM:

Đường center có chiều dài bằng 1.2 lần đường kính đường tròn. Muốn thay đổi thì sửa trị số 1.2 ở dòng thứ 3 trong code.


@Tue_NV: Cái "tại sao" bạn nêu mình biết rồi. Bạn làm thử nghiệm này:
1. Chọn Size của center mark (đặt là c), chọn Type "Line"
2. Vẽ các đường tròn có...
>>
@ttmt_jses:
Bạn dùng thử lisp đánh center mark cho hàng loạt đường tròn. Lệnh CTM:

Đường center có chiều dài bằng 1.2 lần đường kính đường tròn. Muốn thay đổi thì sửa trị số 1.2 ở dòng thứ 3 trong code.


@Tue_NV: Cái "tại sao" bạn nêu mình biết rồi. Bạn làm thử nghiệm này:
1. Chọn Size của center mark (đặt là c), chọn Type "Line"
2. Vẽ các đường tròn có r trong khoảng 0 đến 2c, đánh center mark -> nhận xét
3. Thử nghiệm như trên với các đường tròn có r > 2c -> nhận xét và kết luận...
<<

Filename: 43449_ctm.lsp
Tác giả: gia_bach
Bài viết gốc: 189872
Tên lệnh: dt
Vấn đề tính chu vi miền kín ?

Lisp này tính đuợc 7 đối tượng Region trên file bạn gửi :

(defun c:dt(/ i e ss)
(vl-load-com)
(princ "\nChon REGION :")
(if (setq ss (ssget (list (cons 0 "REGION"))))
(progn
(setq i -1)
(while (setq e (ssname ss (setq i (1+ i))))
(princ "\nDien tich la : " )
(princ (vla-get-area (vlax-ename->vla-object e)))) ) )
(princ))

Filename: 189872_dt.lsp

Trang 76/330

76