Jump to content
InfoFile
Tác giả: TRUNGNGAMY
Bài viết gốc: 74920
Tên lệnh: c2t
chuyển 1 số có phần rời nhau thanh 1 số


Bác tham khảo đoạn code này nhé.

Filename: 74920_c2t.lsp
Tác giả: gia_bach
Bài viết gốc: 74923
Tên lệnh: sapxep
Viết lisp theo yêu cầu [phần 2]

Bạn nói rõ qui luật sắp xếp các text thành hàng ngang:
- thứ tự sắp xếp Text ? các Text cách đều nhau 1 khoảng bằng hằng số ?
- các Text nối với nhau thành 1 Text ?
Bạn chạy thử Lisp này :

Filename: 74923_sapxep.lsp
Tác giả: gia_bach
Bài viết gốc: 74790
Tên lệnh: dt
Lisp move text vào tâm hình chữ nhật
Update theo yêu cầu :

Filename: 74790_dt.lsp
Tác giả: Thaistreetz
Bài viết gốc: 74626
Tên lệnh: ctn
Viết lisp theo yêu cầu [phần 2]

Chiều nay em bận quá, giờ mới post lên cho bác được.
Lisp của bác đây ạ:
- Pick điểm tim trắc ngang -> Pick chọn text cao độ tương ứng của tim
- Pick các điểm cần lấy cao độ thiết kế -> Pick chọn text để ghi cao độ điểm đó. -> tiếp tục pick các điểm khác... Enter để kết thúc.

Filename: 74626_ctn.lsp
Tác giả: study_forever
Bài viết gốc: 74631
Tên lệnh: clt cln clp clg
Lisp căn lề - nhờ các bác sửa giúp 1 ít
Có cái lisp căn lề rất hay, em đưa lên cho anh em nào chưa biết thì dùng, với cả nhờ bác nào thạo về lisp sửa giúp em để lệnh CLG (căn lề giữa) có thể áp dụng cho cả Mtext, thanks


Filename: 74631_clt_cln_clp_clg.lsp
Tác giả: gia_bach
Bài viết gốc: 74536
Tên lệnh: caodo
Viết lisp theo yêu cầu [phần 2]


Hy vọng là đúng ý bạn.

Filename: 74536_caodo.lsp
Tác giả: gia_bach
Bài viết gốc: 74525
Tên lệnh: dtt
Lisp move text vào tâm hình chữ nhật

Bạn chạy thử LISP này : move cả text lẫn Mtext vào trung điểm của 2 điểm chỉ ra

Filename: 74525_dtt.lsp
Tác giả: Nguyen Hoanh
Bài viết gốc: 74337
Tên lệnh: o2l
lisp chuyển các đối tượng về 1 layer


Lisp O2L (Object to layer) dưới đây sẽ giúp bạn. Nếu bạn muốn chuyển các đối tượng khác, bạn hãy copy rồi thêm dòng lệnh (cons "KIEUDOITUONG" "TENLAYER") vào cụm các lệnh cons phía dưới.


Filename: 74337_o2l.lsp
Tác giả: ssg
Bài viết gốc: 74000
Tên lệnh: np
Lisp vẽ nối tiếp đường thẳng?


Tuyệt! Cám ơn anh Hoành nhiều!
Chương trình NP sửa lại đơn giản như sau:



Ssg hỏi thêm anh Hoành cái này nữa. Ssg thường dùng dấu móc nhọn <...> để gán các giá trị mặc định trong các dòng nhắc lệnh. Ví dụ:
http://www.cadviet.com/upfiles/2/mocnhon2.jpg
với hàm ý nếu user không muốn nhập điểm nữa thì Enter để kết thúc vòng lặp. Kiểu này đúng như phong cách...
>>

Tuyệt! Cám ơn anh Hoành nhiều!
Chương trình NP sửa lại đơn giản như sau:



Ssg hỏi thêm anh Hoành cái này nữa. Ssg thường dùng dấu móc nhọn <...> để gán các giá trị mặc định trong các dòng nhắc lệnh. Ví dụ:
http://www.cadviet.com/upfiles/2/mocnhon2.jpg
với hàm ý nếu user không muốn nhập điểm nữa thì Enter để kết thúc vòng lặp. Kiểu này đúng như phong cách của chính AutoCAD. Ví dụ:
Command: OFFSET
Specify offset distance or <5.0000>:
Nếu user Enter sẽ chấp nhận giá trị offset distance trong cặp móc nhọn là 5.0 mà không cần nhập số.
Tuy nhiên, khi cho vào trong codebox của diễn đàn, dấu móc nhọn bị mã hoá khác đi, không giữ được nguyên trạng nữa. Anh Hoành có thể xử lý chỗ này được không?
<<

Filename: 74000_np.lsp
Tác giả: w1nDream
Bài viết gốc: 74120
Tên lệnh: doc
độ dốc của các đoạn trên đường pl


Bạn hãy thử dùng lisp này nhé.Nhưng lisp của mình chưa ghi kết quả ra màn hình.Nhờ các pác júp đỡ vậy.


Filename: 74120_doc.lsp
Tác giả: Tue_NV
Bài viết gốc: 73793
Tên lệnh: 3dp
Viết lisp theo yêu cầu [phần 2]

Chào Tuynh
Lisp này Tue_NV dựa trên nền mà Lisp bạn Thiep viết mà hoàn thành lại theo ý của bạn
Ban đầu Bạn dùng Lisp của Tue_NV để làm. Các cao độ 3dPLINE sẽ dàn trên các Vertex của 3dPline.
Sau này muốn hiệu chỉnh thì dùng Lisp này
Khi chạy Lisp hỏi :
Pick a point on Polyine: -> Bạn Pick vào điểm cần thay đổi độ cao
Pick chon chu thay doi do cao : -> Pick chọn chữ ngay...
>>

Chào Tuynh
Lisp này Tue_NV dựa trên nền mà Lisp bạn Thiep viết mà hoàn thành lại theo ý của bạn
Ban đầu Bạn dùng Lisp của Tue_NV để làm. Các cao độ 3dPLINE sẽ dàn trên các Vertex của 3dPline.
Sau này muốn hiệu chỉnh thì dùng Lisp này
Khi chạy Lisp hỏi :
Pick a point on Polyine: -> Bạn Pick vào điểm cần thay đổi độ cao
Pick chon chu thay doi do cao : -> Pick chọn chữ ngay tại điểm cần thay đổi độ cao

-> Lisp sẽ hiệu chỉnh độ cao theo ý của bạn . Chúc vui vẻ

@thiep : Mạn phép bạn nhé :cheers:
<<

Filename: 73793_3dp.lsp
Tác giả: gia_bach
Bài viết gốc: 73840
Tên lệnh: len
đo SPL nhanh nhất _ HTR

Bổ sung tùy chọn xuất Text : ghi Text cho từng đoạn - Chỉ ghi Text tổng - Không ghi Text .

Filename: 73840_len.lsp
Tác giả: ssg
Bài viết gốc: 73968
Tên lệnh: np
Lisp vẽ nối tiếp đường thẳng?

Thử xem, lệnh NP. Nếu chưa đúng ý thì reply:

Filename: 73968_np.lsp
Tác giả: Tue_NV
Bài viết gốc: 73568
Tên lệnh: addvertex
Viết lisp theo yêu cầu [phần 2]


Tuy nhiên, với tham số Value trong SetBulge method thì thực sự là Tue_NV chưa hiểu .

Value
Double
The bulge value for the vertex at the given index.

tham số Index thì Tue_NV có thể hiểu giống như addvertex method

Anh giabach và mọi người có thể hỗ trợ thêm cho Tue_NV để hoàn thành code này cho trọn vẹn nhé.
Chân thành cảm ơn anh gia_bach và mọi người.

Filename: 73568_addvertex.lsp
Tác giả: gia_bach
Bài viết gốc: 72922
Tên lệnh: loctextso
Chọn text là số

Bạn chạy thử đoạn code này

Filename: 72922_loctextso.lsp
Tác giả: Thaistreetz
Bài viết gốc: 72736
Tên lệnh: tinh
Viết lisp theo yêu cầu [phần 2]

Đúng rồi. chỉ cân nhập số muốn chia dưới dạng 1/X là ok, vậy mà em không nghĩ ra.
cảm ơn anh đã thông tin cho em về hàm distof. có nó thì vấn đề lọc text theo số và chuỗi ký tự đã đc giải quyết một cách đơn giản.
code em đã sửa lại đây ạ. Em nghĩ thế này là nó đã hoàn thiện.
>>

Đúng rồi. chỉ cân nhập số muốn chia dưới dạng 1/X là ok, vậy mà em không nghĩ ra.
cảm ơn anh đã thông tin cho em về hàm distof. có nó thì vấn đề lọc text theo số và chuỗi ký tự đã đc giải quyết một cách đơn giản.
code em đã sửa lại đây ạ. Em nghĩ thế này là nó đã hoàn thiện. :s_big:

@ bác Thanh Bình: hic, bác ơi, bác đừng gọi em là "bác Thaistreetz" nhé, tổn thọ em mất. Em mới ra trường chưa lâu và so với các bác ở đây chắc cũng chỉ được coi là "tụi trẻ" thôi bác ạ. :s_big:
<<

Filename: 72736_tinh.lsp
Tác giả: Thaistreetz
Bài viết gốc: 72770
Tên lệnh: nha
Viết lisp theo yêu cầu [phần 2]
Đây là lisp vẽ nhà dùng để vẽ bình đồ theo cách vẽ của lệnh NHA trong NOVA nhưng đã được đơn giản hóa.
- khi vẽ chỉ cân pick vào 3 điểm góc của nhà.
- Lisp vẽ được 2 loại nhà: nhà ngói (hay nhà lá) và nhà tầng với số tầng nhập vào khi vẽ.
- Với nhà ngói, các đường thể hiện mái ngói được vẽ riêng bằng một layer khác.
- toàn bộ nhà được vẽ bằng layer...
>>
Đây là lisp vẽ nhà dùng để vẽ bình đồ theo cách vẽ của lệnh NHA trong NOVA nhưng đã được đơn giản hóa.
- khi vẽ chỉ cân pick vào 3 điểm góc của nhà.
- Lisp vẽ được 2 loại nhà: nhà ngói (hay nhà lá) và nhà tầng với số tầng nhập vào khi vẽ.
- Với nhà ngói, các đường thể hiện mái ngói được vẽ riêng bằng một layer khác.
- toàn bộ nhà được vẽ bằng layer NHATOANDAC
http://www.cadviet.com/upfiles/2/venha.jpg

Chú ý: Khi pick các điểm góc nhà ngói bạn bắt buộc phải pick lần lượt 3 góc theo chiều quay kim đồng hồ. Mình phát hiện lỗi này sau khi đã viết xong lisp nên ngại viết lại. bạn sử dụng chú ý một chút là ok thôi.
<<

Filename: 72770_nha.lsp
Tác giả: duy782006
Bài viết gốc: 72799
Tên lệnh: nalcl nall
Xin lisp copy align

*Đây bạn:
-Tên lệnh: NALL (new algin line)
-Chọn đối tượng mốn copy và rotate (1 hoặc nhiều đối tượng) enter.
-Chọn các line (1 hoặc nhiều đối tượng, chỉ nhận đối tượng line) enter ==>Xong.
*Ở đây thì lisp sẽ copy đối tượng từ điểm đích thứ nhất đến điểm đầu của line và quay nó song song với line. Nếu bạn muốn copy đối tượng từ điểm đích thứ nhất...
>>

*Đây bạn:
-Tên lệnh: NALL (new algin line)
-Chọn đối tượng mốn copy và rotate (1 hoặc nhiều đối tượng) enter.
-Chọn các line (1 hoặc nhiều đối tượng, chỉ nhận đối tượng line) enter ==>Xong.
*Ở đây thì lisp sẽ copy đối tượng từ điểm đích thứ nhất đến điểm đầu của line và quay nó song song với line. Nếu bạn muốn copy đối tượng từ điểm đích thứ nhất đến điểm cuối của line thì sửa
(setq diem1m (cdr (assoc 10 ttdt)))
(setq diem2m (cdr (assoc 11 ttdt)))
Thành
(setq diem1m (cdr (assoc 11 ttdt)))
(setq diem2m (cdr (assoc 10 ttdt)))
Là được.

*Sẳn tiện mình viết luôn lệnh NALCL:
Giống lệnh trên nhưng thay vì chọn 2 điểm nguồn thì lisp hỏi chọn line nguồn (line này có thể nằm trong tập hợp chọn hoặc không gì cũng được). Lisp sẽ lầy điểm đầu và điểm cuối của line này làm 2 điểm nguồn.


<<

Filename: 72799_nalcl_nall.lsp
Tác giả: Thaistreetz
Bài viết gốc: 72649
Tên lệnh: cong tru nhan chia
Viết lisp theo yêu cầu [phần 2]

Mình đã nhiều lần gặp trường hợp như bạn trong công việc. đây là lisp mình tìm được trên diễn đàn này. mình đã sửa lại 1 chút để bạn có thể sử dụng được cả 4 phép tính. Nó có tác dụng cộng, hoặc trừ, hoặc nhân, hoặc chia tất cả các text số mà bạn chọn với một số mà bạn nhập vào.
lệnh là: cong; tru; nhan; chia.

Chú ý là kết quả tính toán sẽ lấy số...
>>

Mình đã nhiều lần gặp trường hợp như bạn trong công việc. đây là lisp mình tìm được trên diễn đàn này. mình đã sửa lại 1 chút để bạn có thể sử dụng được cả 4 phép tính. Nó có tác dụng cộng, hoặc trừ, hoặc nhân, hoặc chia tất cả các text số mà bạn chọn với một số mà bạn nhập vào.
lệnh là: cong; tru; nhan; chia.

Chú ý là kết quả tính toán sẽ lấy số chữ số sau dấu phẩy theo Precision trong định dạng Units bản vẽ của bạn. Với text cao độ thường lấy 2 chữ số sau dấu phẩy. bạn nên thiết lập lại Precision trước khi chạy thực hiện lệnh.
<<

Filename: 72649_cong_tru_nhan_chia.lsp
Tác giả: Thaistreetz
Bài viết gốc: 72673
Tên lệnh: tinh
Viết lisp theo yêu cầu [phần 2]
Đây là lisp em đã viết lại theo gợi ý của anh Tuệ
Lisp sẽ đưa ra yêu cầu
- nhập số muốn nhân. (nếu không có thì enter bỏ qua)
- nhập số muốn chia. (nếu không có thì enter bỏ qua. em tách số muốn nhân và số muốn chia thành 2 số độc lập để đỡ fải nhẩm giá trị nghịch đảo của một số nào đó khi thực muốn hiện phép chia)
- nhập số muốn cộng (nếu không có thì...
>>
Đây là lisp em đã viết lại theo gợi ý của anh Tuệ
Lisp sẽ đưa ra yêu cầu
- nhập số muốn nhân. (nếu không có thì enter bỏ qua)
- nhập số muốn chia. (nếu không có thì enter bỏ qua. em tách số muốn nhân và số muốn chia thành 2 số độc lập để đỡ fải nhẩm giá trị nghịch đảo của một số nào đó khi thực muốn hiện phép chia)
- nhập số muốn cộng (nếu không có thì enter bỏ qua. nếu muốn thực hiện phép trừ thay cho phép cộng thì chỉ cần nhập giá trị âm)
- chọn các text số cần thay đổi giá trị. --> OK

Quả thật sau khi hoàn thiện lisp này mới thấy ý tưởng của anh Tuệ rất hay, rất thông minh. cảm ơn anh đã góp ý để em hoàn thiện code này. :s_big:

Đoạn code này em có bổ xung thêm phần lọc đối tượng text là số và chuỗi ký tự. cách làm hơi củ chuối tý nhưng em nghĩ nó hoạt động tương đối hiệu quả rồi. hiện tại em cũng chưa nghĩ ra cách nào tốt hơn giúp lọc đối tượng text thành số và chuỗi ký tự riêng biệt.
cách làm này có nhược điểm:
- bị giới hạn nhận diện các số có giá trị bằng 0 (ngoài các số có giá trị là 0 đã đưa vào lisp như trên thì các số 0 dạng khác nó sẽ hiểu thành chuỗi ký tự. VD số 0.0 thì nó nhận diện được, còn số 000.00000 nó hiểu là chuỗi ký tự "000.00000" và ko thực hiện phép tính cho số này)
- còn bị nhầm lẫn một chỗi ký tự thành một số nếu các kỹ tự đầu chuỗi là số. VD chỗi 23ABCD thì nó sẽ hiểu thành 23.
tuy nhiên những trường hợp trên là rất ít gặp và có thể khắc phục trong qúa trình sử dụng. Hi vọng anh Tuệ mọi người có cách khác hay hơn.
<<

Filename: 72673_tinh.lsp

Trang 5/301

5