Jump to content
InfoFile
Tác giả: Snowman
Bài viết gốc: 34477
Tên lệnh: dsc
nhập các text đi theo các block để làm ký hiệu

Hãy sử dụng tính năng của block, cộng thêm một chút sáng tạo trong cách dùng. Phương án giải quyết như sau:
Cách 1: dùng Tcount
- Gọi tên block bóng đèn là A, bạn hãy tạo một block với tên B chứa block A + text đánh số cột
- Thay vì chèn block A như thường lệ, hãy chèn block B
- Sau khi chèn xong, hãy chọn tất cả các block B và explode. Chỉnh sửa tất cả các text tên cột...
>>

Hãy sử dụng tính năng của block, cộng thêm một chút sáng tạo trong cách dùng. Phương án giải quyết như sau:
Cách 1: dùng Tcount
- Gọi tên block bóng đèn là A, bạn hãy tạo một block với tên B chứa block A + text đánh số cột
- Thay vì chèn block A như thường lệ, hãy chèn block B
- Sau khi chèn xong, hãy chọn tất cả các block B và explode. Chỉnh sửa tất cả các text tên cột cho đúng ý (nên dùng filter hoặc ssx để chỉnh cho đồng bộ).
- Bạn đã có các text như ý để sử dụng với Tcount

Cách 2: dùng lisp với thuật toán:
- Chọn text đầu tiên
- Chọn điểm gốc copy
- Chọn điểm chèn cột tiếp theo (+ options (đánh số tự động hay thay đổi)
Đây là lisp đánh số cột điện tôi sưu tầm và sửa lại, bạn có thể tham khảo:

<<

Filename: 34477_dsc.lsp
Tác giả: tien2005
Bài viết gốc: 33951
Tên lệnh: arearon
Viết Lisp theo yêu cầu
Mình đã sửa lại đoạn code trên để nó ghi text có kiểu TC và đúng với trường hợp textheight khác 0, nếu = 0 thì lisp hiện tại đã lấy SCALE*2.5 làm chiều cao text

Filename: 33951_arearon.lsp
Tác giả: Snowman
Bài viết gốc: 33950
Tên lệnh: vtl1
Lisp rải taluy trên đường cong
Đây là lisp tôi sưu tầm và chỉnh sửa lại chút ít, có thể rải taluy cho các loại line, pline, spline, arc, circle ...
(Mới dừng ở việc vẽ taluy cho 1 đường, phần vẽ mái taluy giữa 2 đường tôi chưa sửa xong)

Filename: 33950_vtl1.lsp
Tác giả: gp14
Bài viết gốc: 33433
Tên lệnh: layiso lai layoff lo layon loo oll laylck lk layulk lkk ll layset
Em cần Lisp bật tắt layer... (layon, layoff, layiso)

Filename: 33433_layiso_lai_layoff_lo_layon_loo_oll_laylck_lk_layulk_lkk_ll_layset.lsp
Tác giả: Nguyen Hoanh
Bài viết gốc: 33862
Tên lệnh: fl
Viết Lisp theo yêu cầu


Lệnh là FL (flip line):

Filename: 33862_fl.lsp
Tác giả: ssg
Bài viết gốc: 33300
Tên lệnh: vc
Bảng toạ độ các đỉnh thửa đất


Lisp có đủ 4 yêu cầu trên:



Góp ý:
Nếu có nhờ ai viết lisp, bạn nên nêu rõ và đủ các yêu cầu ngay từ đầu. Làm lần đầu không ngại nhưng sửa đi sửa lại... ngán lắm!

Filename: 33300_vc.lsp
Tác giả: tien2005
Bài viết gốc: 33024
Tên lệnh: mm
Nhân 2 cột số (kết quả lthay thế là cột số thứ 3)

mình có đoạn code này viết đã lâu bạn xem có giúp được gì ko, cái này mình để tính hoặc sửa bảng thống kê thép đã có sẵn trên bản vẽ


tên lệnh là MM, he so = 0.001 là để đổi mm ra m. Còn khi tính khối lượng thép tròn thì để he so = 1

Filename: 33024_mm.lsp
Tác giả: khuduba
Bài viết gốc: 32770
Tên lệnh: bvmauxd
Tác giả: Snowman
Bài viết gốc: 32849
Tên lệnh: expl
Viết Lisp theo yêu cầu


Trùi ạ bạn mất công mất sức nhấn Tab làm gì, file text xuất ra đã có định dạng hàng cột cho bạn rồi đấy thôi (File txt ko thể căn thẳng cột giống như excel đuợc, các text đó đã được định dạng theo cột nhưng chiều dài text ko giống nhau nên bị lệch thôi. Bạn chỉ cần open nó bằng excel thì sẽ thấy hàng cột ngay ngắn mà (file txt trên của bạn đã bị bạn sửa làm hỏng định...
>>

Trùi ạ bạn mất công mất sức nhấn Tab làm gì, file text xuất ra đã có định dạng hàng cột cho bạn rồi đấy thôi (File txt ko thể căn thẳng cột giống như excel đuợc, các text đó đã được định dạng theo cột nhưng chiều dài text ko giống nhau nên bị lệch thôi. Bạn chỉ cần open nó bằng excel thì sẽ thấy hàng cột ngay ngắn mà (file txt trên của bạn đã bị bạn sửa làm hỏng định dạng roài :) Chạy lại đi thôi)
Tôi post luôn lên đây đoạn lisp mới, file xuất ra sẽ có dạng "giả lập excel" :) . Nếu bạn muốn save về file txt thì đổi đuôi về .txt là được. (Tôi sợ bạn dùng làm file số liệu nên trước đây đã để file xuất ra là txt)

<<

Filename: 32849_expl.lsp
Tác giả: gia_bach
Bài viết gốc: 32619
Tên lệnh: cso
Chọn text là số


Hàm lọc các đối tượng TEXT có nội dung là số (nguyên, thập phân)

(defun ChonTextSo (/ ss i ent str ss1)
(if (setq ss (ssget (list (cons 0 "TEXT"))))
(progn
(setq i 0
ss1 (ssadd)
)
(repeat (sslength ss)
(setq ent (ssname ss i)
str (cdr(assoc 1 (entget ent)))
i (+ 1 i)
)
(if (distof str 2)
(ssadd ent ss1)
)
>>


Hàm lọc các đối tượng TEXT có nội dung là số (nguyên, thập phân)

(defun ChonTextSo (/ ss i ent str ss1)
(if (setq ss (ssget (list (cons 0 "TEXT"))))
(progn
(setq i 0
ss1 (ssadd)
)
(repeat (sslength ss)
(setq ent (ssname ss i)
str (cdr(assoc 1 (entget ent)))
i (+ 1 i)
)
(if (distof str 2)
(ssadd ent ss1)
)
)
(if (> (sslength ss1) 0)
ss1
)
)
)
)

To : Tue_NV
đoạn Code của bạn bị lỗi ở phần hàm IF (bạn xem lại cú pháp của hàm này nhé)

Đây là đoạn code có nội dung như bạn yêu cầu :

<<

Filename: 32619_cso.lsp
Tác giả: ssg
Bài viết gốc: 32636
Tên lệnh: vc
Bảng toạ độ các đỉnh thửa đất

Xin lỗi bạn, mình quên không đưa vào các function collect (chúng thường xuyên được autoload trên máy mình nên khi test không phát hiện ra)
Bạn dùng cái này. Nếu có gì bất ổn thì phản hồi:


Filename: 32636_vc.lsp
Tác giả: ssg
Bài viết gốc: 32769
Tên lệnh: vd
Viết Lisp theo yêu cầu

1- Góp với ý bạn, đã tìm hiểu về Lisp, trước hết phải chuẩn ngay từ tên gọi:
+ LISP - viết tắt của LISt Processing programming language - ngôn ngữ lập trình dựa trên cơ sở xử lý danh sách
+ AutoLISP - Lisp của hãng AutoDesk

Không chỉ đơn thuần là cái tên để phân biệt thằng Tí hay thằng Tèo, tên gọi của LISP nói lên cái bản chất, cái "hồn" của ngôn ngữ. Là LIST...
>>

1- Góp với ý bạn, đã tìm hiểu về Lisp, trước hết phải chuẩn ngay từ tên gọi:
+ LISP - viết tắt của LISt Processing programming language - ngôn ngữ lập trình dựa trên cơ sở xử lý danh sách
+ AutoLISP - Lisp của hãng AutoDesk

Không chỉ đơn thuần là cái tên để phân biệt thằng Tí hay thằng Tèo, tên gọi của LISP nói lên cái bản chất, cái "hồn" của ngôn ngữ. Là LIST PROCESSING cho nên kiểu dữ liệu quan trọng nhất của ngôn ngữ này chính là LIST DATA TYPE. Bạn muốn lập được các chuơng trình Lisp đơn giản nhưng hiệu quả, hãy học kỹ về LIST và các kỹ thuật thao tác với chúng...

2- Cái sườn như bạn mô tả là đây, thêm "mắm muối" vào tuỳ ý bạn:


<<

Filename: 32769_vd.lsp
Tác giả: Snowman
Bài viết gốc: 32519
Tên lệnh: mblk
Đổi vị trí base point của block thế nào

Muốn thay đổi vị trí của tất cả các block trong bản vẽ mà ko làm thay đổi điểm chèn của block (yêu cầu quả là rắc rối :) ) Bạn có thể dùng thử lisp sau đây, có thể sửa để rotate block với một góc xác định mà ko động chạm thay đổi gì đến block cả.


Cái này dùng với...
>>

Muốn thay đổi vị trí của tất cả các block trong bản vẽ mà ko làm thay đổi điểm chèn của block (yêu cầu quả là rắc rối :) ) Bạn có thể dùng thử lisp sau đây, có thể sửa để rotate block với một góc xác định mà ko động chạm thay đổi gì đến block cả.


Cái này dùng với những trường hợp "điểm chèn phải đi liền với đối tượng" (hố ga chẳng hạn - toạ độ hố ga thường lấy bằng cách lọc toạ độ block, di chuyển đối tượng trong block mà giữ nguyên điểm chèn thì đến lúc thi công...cống đặt một nơi, hố ga một nẻo :)
<<

Filename: 32519_mblk.lsp
Tác giả: Tue_NV
Bài viết gốc: 32595
Tên lệnh: cso
Chọn text là số

Đúng là đoạn Code trên tính tổng của các số (sau khi loại bỏ các text chữ). Nhưng ý của em ngay từ đầu là muốn chọn đối tượng là text số để xử lý phép tính số học sau khi chọn bằng Grid.
Ứng dụng hàm IsNumeric là hàm kiểm tra nội dung của 1 chuỗi là số, em viết đoạn Code dưới đây để thực hiện phép tính cộng thêm vào giá trị được chọn để giá trị được chọn...
>>

Đúng là đoạn Code trên tính tổng của các số (sau khi loại bỏ các text chữ). Nhưng ý của em ngay từ đầu là muốn chọn đối tượng là text số để xử lý phép tính số học sau khi chọn bằng Grid.
Ứng dụng hàm IsNumeric là hàm kiểm tra nội dung của 1 chuỗi là số, em viết đoạn Code dưới đây để thực hiện phép tính cộng thêm vào giá trị được chọn để giá trị được chọn nhận kết quả mới là thêm một giá trị cộng thêm vào. Nhưng đoạn Code dưới bị lỗi mà em chưa biết sai ở đâu. Anh sửa lại giúp em với nhé.

Cám ơn anh nhé.
<<

Filename: 32595_cso.lsp
Tác giả: Tue_NV
Bài viết gốc: 32291
Tên lệnh: bkl
Nhân 2 cột số (kết quả lthay thế là cột số thứ 3)
Mình có 2 cột số : Cột số 1 và cột số 2.
Đoạn lệnh Autolisp tính tích 2 cột số và cho ra cột số thứ 3.
Và sau khi chạy Lisp dưới đây, ta chọn cột 1 và chọn cột 2, nhập điểm chèn ở cột số 3, sẽ cho ra kết quả ở cột 3(là tích của cột 1 và cột 2)
Ý của mình ở đây là : giả sử cột thứ 3 đã có dãy số. Sau khi ta chọn cột 1, cột 2 và ta chọn giá trị thay thế là cột...
>>
Mình có 2 cột số : Cột số 1 và cột số 2.
Đoạn lệnh Autolisp tính tích 2 cột số và cho ra cột số thứ 3.
Và sau khi chạy Lisp dưới đây, ta chọn cột 1 và chọn cột 2, nhập điểm chèn ở cột số 3, sẽ cho ra kết quả ở cột 3(là tích của cột 1 và cột 2)
Ý của mình ở đây là : giả sử cột thứ 3 đã có dãy số. Sau khi ta chọn cột 1, cột 2 và ta chọn giá trị thay thế là cột 3 thì các giá trị tích của cột 1 và cột 2 sẽ được thay thế ở cột 3.
Mong các anh em CADVIET giúp đỡ.
Xin chân thành cảm ơn.
http://www.cadviet.com/upfiles/Tich2cotso.zip

<<

Filename: 32291_bkl.lsp
Tác giả: gia_bach
Bài viết gốc: 32448
Tên lệnh: cg
Chọn text là số


Hàm kiểm tra nội dung của 1 chuỗi là số
không xét t/hợp chuỗi có định dạng thêm khoảng trắng giữa hàng ngàn. vd : 23 000 -> 23000
(DEFUN IsNumeric (str)
(if (not(vl-string-search " " str))
(if (member (type (read str)) '(REAL INT) )
T
nil
)
nil
)
)
Đoạn code của bạn được sửa lại :

Filename: 32448_cg.lsp
Tác giả: gia_bach
Bài viết gốc: 32505
Tên lệnh: cg1
Chọn text là số


Hy vọng đoạn code sau đúng ý bạn.


Filename: 32505_cg1.lsp
Tác giả: Nguyen Hoanh
Bài viết gốc: 31825
Tên lệnh: sbtd
Viết Lisp theo yêu cầu

Bạn dùng lệnh SBTD, chọn các block rồi nhập vào tỷ lệ 1.

Filename: 31825_sbtd.lsp
Tác giả: nataca
Bài viết gốc: 32143
Tên lệnh: q1 q2 q3 q4 q5
Viết Lisp theo yêu cầu

đây:

Ồ vừa post xong thì thấy bác NguyenHoanh post.

Filename: 32143_q1_q2_q3_q4_q5.lsp
Tác giả: nataca
Bài viết gốc: 31585
Tên lệnh: boj
lisp chặt rời các đối tượng làm hai phần

Nhiều đối tượng đây. Vẫn là lệnh BOJ . Chọn nhóm đối tượng cần break, chọn 1 đối tượng làm dao cắt. Chú ý là lisp này vẫn chỉ giới hạn bởi đối tượng cần break là đường thẳng, cung tròn, nếu polynine nhiều đoạn thì mỗi lần chỉ cắt được 1 đoạn ( cái này phải cần thêm thời gian để hoàn thiện ).

Filename: 31585_boj.lsp

Trang 22/330

22