Jump to content
InfoFile
Tác giả: ketxu
Bài viết gốc: 125153
Tên lệnh: mcd
Vẽ mặt cắt dầm

Theo mình bạn nên để Pline thì sẽ thấy thuận lợi hơn rất nhiều khi xử lý.
Lisp của bạn đây,mình đã rút ngắn khoảng cách vẽ sàn,không để nét cắt bị lộn nữa,hi vọng đúng ý bạn

Filename: 125153_mcd.lsp
Tác giả: ketxu
Bài viết gốc: 124659
Tên lệnh: srt
Viết lisp theo yêu cầu [phần 2]

Cái này @bác Sì trít, vừa mới có rì quét mấy hôm thì phải


Filename: 124659_srt.lsp
Tác giả: 18011985
Bài viết gốc: 124818
Tên lệnh: thu
Lựa chọn đối tượng sau khi boundary
Mình có 1 hình vẽ như sau: 1 hình vuông và 1 hình tròn nằm bên trong.
1- Tạo đường bo hv, ht (đã làm được)
2- Nếu chọn lại vị trí đó lần nữa thì báo lỗi.
3- Vì bước 2 có nên phải lấy được giá trị boundary của hv và ht
Nên các bạn chỉ hộ mình bước 2 và bước 3
Sau đây là bước 1 của mình

Filename: 124818_thu.lsp
Tác giả: Thaistreetz
Bài viết gốc: 124252
Tên lệnh: vb
Tạo đường bao cho các đường kín


Như thế này phải không?

Chú ý: cái này vẽ đuờng bao cho mọi đối tuợng bất kỳ

Filename: 124252_vb.lsp
Tác giả: thanhduan2407
Bài viết gốc: 124427
Tên lệnh: ftext
Viết giúp Lisp xoá text trong khoảng nhất định

Trước hết em xin chân thành cảm ơn bác Gia_Bach đã nhiệt tình giúp chúng em có được bài toán và ứng dụng rất hay trong việc lọc text. Lisp lọc text dựa trên sự giao nhau của đường bao text.
http://www.cadviet.com/upfiles/3/2_17.jpg
Tuy nhiên trong quá trình sử dụng thì lisp cũng đánh dấu lọc khi text đứng 1 mình. Em không biết được nguyên nhân tại đâu nữa. Em đang làm lọc text nhưng sếp...
>>

Trước hết em xin chân thành cảm ơn bác Gia_Bach đã nhiệt tình giúp chúng em có được bài toán và ứng dụng rất hay trong việc lọc text. Lisp lọc text dựa trên sự giao nhau của đường bao text.
http://www.cadviet.com/upfiles/3/2_17.jpg
Tuy nhiên trong quá trình sử dụng thì lisp cũng đánh dấu lọc khi text đứng 1 mình. Em không biết được nguyên nhân tại đâu nữa. Em đang làm lọc text nhưng sếp em lại yêu cầu là chỉ xoá những text trùng đè lên nhau.Nhiều text mặc dù chữ không trùng đè lên nhau nhưng đường bao text lại giao nhau nên nó bị đánh dấu:
http://www.cadviet.com/upfiles/3/1_33.jpg
Các bác có thể giúp em chỉnh sửa lại lisp giải quyết được vấn đề text không đè lên nhau mà đường bao text lại giao nhau. Bài toán này được đặt ra là do bọn em đi đo sâu dưới nước nên số liệu tương đối dày và nhiều, nếu mà xoá nhiều quá thì họ sẽ coi như là đo sâu bị gián đoạn tín hiệu vệ tinh nên không chấp thuận.
Lisp em dùng là lisp này:

Cảm ơn các bác nhiều.
<<

Filename: 124427_ftext.lsp
Tác giả: phamthanhbinh
Bài viết gốc: 123885
Tên lệnh: backtxt
dùng lệnh battman chữ bi đảo ngược

Chào bạn minhtit,
Bạn dùng thử cái này coi sao nhé.


Do trên bản vẽ của bạn có những block cùng tên nhưng không bị ngược nên mình không thể dùng bài chơi một phát được. Bạn cần lưu ý khi chọn đối tượng nhé, chỉ chọn các đối tượng block có text bị ngược thôi kẻo lợn lành chữa thành lợn toi đó. Nên sử dụng phương pháp pick chọn cho nó khỏi bị nhầm. Phóng to...
>>

Chào bạn minhtit,
Bạn dùng thử cái này coi sao nhé.


Do trên bản vẽ của bạn có những block cùng tên nhưng không bị ngược nên mình không thể dùng bài chơi một phát được. Bạn cần lưu ý khi chọn đối tượng nhé, chỉ chọn các đối tượng block có text bị ngược thôi kẻo lợn lành chữa thành lợn toi đó. Nên sử dụng phương pháp pick chọn cho nó khỏi bị nhầm. Phóng to hình lên để nhìn cho rõ và có thể dùng lệnh pan để di chuyển màn hình trong lúc chọn cho nó dễ bạn ạ.
Do bản vẽ của bạn khá nặng nên mỗi lần chạy lisp phải chờ nó regen lại bản vẽ khá lâu đó. Bạn có thể copy thành các file nhỏ hơn cho dễ sửa rồi sau đó ghép lại cũng được

Chúc bạn vui.
À mà do đây là các block động nên ở mỗi bản vẽ nó lại có một tên khác đó bạn nhé. (cái tên "*U3810" chỉ đúng với bản vẽ bạn đã post lên, khi copy sang bản vẽ khác là nó lại mang tên khác ngay, bạn chớ có ngạc nhiên)
<<

Filename: 123885_backtxt.lsp
Tác giả: hugo75
Bài viết gốc: 124242
Tên lệnh: mcd
Viết lisp theo yêu cầu [phần 2]

Trên diễn đàn có 1 lisp vẽ mặt cắt dầm:

Giả sử mình có sẵn 4 layer tên là:1,2,3,4 vậy mình muốn gán cho đường bao là layer 1 ,dấu cắt là số 2,chấm tròn thép là số
3,thép đai là số 4 thì phải sửa làm sao trong lisp này.Các bác thông cảm e đã viết bài này trong mục khác nhưng hình như mục đó ít cao thủ vào đọc nên mạn phép cho e viết vào mục này.Mong được sự giúp đỡ...
>>
Trên diễn đàn có 1 lisp vẽ mặt cắt dầm:

Giả sử mình có sẵn 4 layer tên là:1,2,3,4 vậy mình muốn gán cho đường bao là layer 1 ,dấu cắt là số 2,chấm tròn thép là số
3,thép đai là số 4 thì phải sửa làm sao trong lisp này.Các bác thông cảm e đã viết bài này trong mục khác nhưng hình như mục đó ít cao thủ vào đọc nên mạn phép cho e viết vào mục này.Mong được sự giúp đỡ của các bác.Thanks
<<

Filename: 124242_mcd.lsp
Tác giả: Tri
Bài viết gốc: 123875
Tên lệnh: rd
chỉnh sửa dim kích thước

Mạn phép bac , xin sửa lại cho gọn :

PS: Các bác quan tâm, giúp đỡ em câu hỏi này với.
Hỏi về VBA-Bắt đầu học VBA-Bài viết số 12
Thanks

Filename: 123875_rd.lsp
Tác giả: phamthanhbinh
Bài viết gốc: 123771
Tên lệnh: loc
Viết lisp theo yêu cầu [phần 2]

Chào bạn ocinaqua,
Gửi bạn cái lisp lọc theo nhóm đối tượng mẫu. Tuy mình cải tạo cái lisp của bác NguyenNdait để bạn dùng thử như thật lòng mình khuyên bạn nên hạn chế sử dụng so với cái lisp của bác ấy. Lý do là vì với các bản vẽ như của bạn, có rất nhiều đối tượng khác nhau nhưng lại cùng kiểu loại, cùng màu hay cùng lớp, cùng ltyp. Nếu bạn chọn theo nhóm đối tượng...
>>

Chào bạn ocinaqua,
Gửi bạn cái lisp lọc theo nhóm đối tượng mẫu. Tuy mình cải tạo cái lisp của bác NguyenNdait để bạn dùng thử như thật lòng mình khuyên bạn nên hạn chế sử dụng so với cái lisp của bác ấy. Lý do là vì với các bản vẽ như của bạn, có rất nhiều đối tượng khác nhau nhưng lại cùng kiểu loại, cùng màu hay cùng lớp, cùng ltyp. Nếu bạn chọn theo nhóm đối tượng hơi nhiều một chút là dễ dính đòn chọn hầu như hết các đối tượng lắm, ngoại trừ việc chọn theo màu (Bởi vì như bạn biết thì chả có đối tượng nào lại có hai màu cả đúng không) Vì thế với lísp này khi bạn định chọn các nhóm đối tượng theo màu thì bạn phải chọn đối tượng nào có màu cần chọn trước bạn nhé.
Việc chọn đối tượng theo nhóm đối tượng mẫu này chỉ nên sử dụng với các bản vẽ có tổ chức chặt chẽ và quy củ thôi bạn ạ, nếu không thà bạn dùng cái lisp trước của bác NguyênNdait còn nhanh chóng và thuận lợi hơn nhiều.

<<

Filename: 123771_loc.lsp
Tác giả: ssg
Bài viết gốc: 12383
Tên lệnh: r2p
lisp chuyển region sang pline!!

Có cần dùng lisp không? Bạn dùng lệnh BO tự khắc có pline kín. Region gốc ban đầu nếu không cần nữa thì cho hide hoặc del chúng đi?
Nếu bạn vẫn thích dùng lisp thì đây:

Filename: 12383_r2p.lsp
Tác giả: thanhduan2407
Bài viết gốc: 123502
Tên lệnh: gd
Không cắt được đường kích thước

Bạn dùng lisp này để đưa tất cả các dimension có z khác 0 về 0 nhé. Sau đó dùng lisp cắt dim để cắt. Mình cũng mới mày mò thôi.

Filename: 123502_gd.lsp
Tác giả: ketxu
Bài viết gốc: 123433
Tên lệnh: trai giua phai tren giua1 duoi
Căn lề text + Mtext, Căn lề đối tượng
Giờ là lisp căn lề đối tượng (s).Bao gồm có L,PL,ARC,Dim,Hatch,Block,Att,Point,Text,Mtext,Ellisp,SPline.Code thì dài khỏi nói rồi ^^ Các bác thử test xem sao.(E đã bỏ phần bắt lỗi và các thiết đặt reset setting đi cho đỡ rối mắt r )

E cũng làm 1 phát test với 40k đối tượng già trẻ lớn bé to nhỏ đậm nhạt..Kết quả có phần đạt yêu cầu ^^

Filename: 123433_trai_giua_phai_tren_giua1_duoi.lsp
Tác giả: ketxu
Bài viết gốc: 123407
Tên lệnh: cd
Cắt chân dim

- Có nhiều phiên bản trong cùng topic gốc

Filename: 123407_cd.lsp
Tác giả: phamthanhbinh
Bài viết gốc: 123176
Tên lệnh: nsmp
Hỏi: Cách nội suy tâm đường tròn 3D

Chào bác NguyenNdait,
Quả thật là việc cơ bản phải giải quyết là thuật toán loại bớt các điểm để giảm thiểu số điểm cần xét. Tuy nhiên do chưa có tiêu chí để loại nên hiện tại mới chỉ là loại các điểm trùng nhau và các điểm thẳng hàng.
Nếu có thể đưa ra thêm các tiếu chí loại điểm nữa thì tốt quá bác ạ.
Mình làm thử bài toán của bạn duyminh86 về xác...
>>

Chào bác NguyenNdait,
Quả thật là việc cơ bản phải giải quyết là thuật toán loại bớt các điểm để giảm thiểu số điểm cần xét. Tuy nhiên do chưa có tiêu chí để loại nên hiện tại mới chỉ là loại các điểm trùng nhau và các điểm thẳng hàng.
Nếu có thể đưa ra thêm các tiếu chí loại điểm nữa thì tốt quá bác ạ.
Mình làm thử bài toán của bạn duyminh86 về xác định mặt phẳng nghiêng.
Hướng giải là
1/- Chọn các nhóm 3 điểm không thẳng hàng.
2/- lập phương trình mặt phẳng qua 3 diểm đó.
3/- Loại bỏ các mặt phẳng có góc tạo với mặt phẳng z=0 một góc nghiêng > 25 độ. (vì chưa rõ cái mặt phẳng vuông góc với đường tâm trụ của bạn duyminh nằm theo kiểu gì nên tạm chọn là hình trụ thẳng đứng, khi cần thiết có thể phải xác định góc giữa mặt phẳng mới tạo với mặt phẳng này)
4/- Lấy bình phương tổng khoảng cách từ các điểm trong tập hợp tới mặt phẳng đó.
5/- Chọn mặt phẳng có giá trị tổng bình phương các khoảng cách là nhỏ nhất
6/- Xác định 3 điểm đó và phương trình mặt phẳng qua 3 điểm này

Kết quả được lisp như sau:


Kết quả chạy thử cho thấy:
1/- Lisp này chạy nhanh hơn lisp nội suy tâm vòng tròn đi qua tập hợp điểm đồng phẳng do không cần phải dựng vòng tròn qua ba điểm.
2/- Lisp chỉ cho người dùng biết 3 điểm đã tạo ra mặt phẳng và phương trình của mặt phẳng cũng như tổng bình phương các khoảng cách từ các điểm trong tập hợp điểm được chọn tới mặt phẳng đó để người dùng tùy nghi sử dụng.
3/- Đây chưa phải là mặt phẳng tối ưu, có tổng bình phương khoảng cách từ các điểm tới nó là nhỏ nhất, song nó là tối ưu trong số các mặt phẳng đi qua 3 điểm bất kỳ không thẳng hàng của tập hợp điểm.
4/- Có thể loại bớt các mặt phẳng này bằng cách hạn chế góc nghiêng của nó so với mặt phẳng chuẩn để lisp chạy nhanh hơn.

Rất mong các bác dùng thử và cho ý kiến để hoàn thiện nó.
<<

Filename: 123176_nsmp.lsp
Tác giả: NguyenNdait
Bài viết gốc: 122804
Tên lệnh: loc
Viết lisp theo yêu cầu [phần 2]

Vấn đề này không khó :

SR: Bỏ cái vụ luuBHT và traBHT

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

Chào bác NDBNGO
Bác thay dòng
(setq g2 (fix g1))
thành dòng
(setq g2 (fix (+ g1 0.0001)))
trong code của bác NguyenNdaiT là được. Hoặc sử dụng hàm FixR mà Tue_NV đã viết
Đây có lẽ là lỗi làm tròn của hàm Fix
Về hàm prefix0 thì Tue_NV đã chạy thử không thấy lỗi gì cả.
Và đã viết lại hàm con prefix0 (thay hàm itoa bằng rtos), bác chạy thử đoạn code này thử nhé :...
>>

Chào bác NDBNGO
Bác thay dòng
(setq g2 (fix g1))
thành dòng
(setq g2 (fix (+ g1 0.0001)))
trong code của bác NguyenNdaiT là được. Hoặc sử dụng hàm FixR mà Tue_NV đã viết
Đây có lẽ là lỗi làm tròn của hàm Fix
Về hàm prefix0 thì Tue_NV đã chạy thử không thấy lỗi gì cả.
Và đã viết lại hàm con prefix0 (thay hàm itoa bằng rtos), bác chạy thử đoạn code này thử nhé :

CHúc bác thành công
<<

Filename: 123048_fso.lsp
Tác giả: Thaistreetz
Bài viết gốc: 122498
Tên lệnh: srt
Lisp cộng - trừ - nhân - chia 2 hàng số cho ra hàng thứ 3
Cái này mình viết hồi mới tập tọe Lisp, dùng có mấy lần rồi chẳng bao giờ dùng nữa. có thể có những lỗi người viết không lường trước vì hồi đó còn gà. Nếu dùng nó gặp lỗi gì thì thông báo lại để mình sửa.

Filename: 122498_srt.lsp
Tác giả: Nguyen Hoanh
Bài viết gốc: 12253
Tên lệnh: t2b
Chèn block có tên tương ứng với text


Lệnh là T2B (text to block)


Filename: 12253_t2b.lsp
Tác giả: ketxu
Bài viết gốc: 122599
Tên lệnh: mh
Merge Hatch

- Gộp các Hatch riêng rẽ thành 1 Hatch





Filename: 122599_mh.lsp
Tác giả: phamthanhbinh
Bài viết gốc: 122437
Tên lệnh: xap
Nhờ cao thủ sửa giúp em đoạn list Explode !

Chào bạn hhhhgggg,
Dùng cái ni coi đã vừa ý bạn chưa hỉ.


PS: khi test với cái bản vẽ bạn gửi thì sau khi chạy lisp nó không ra đúng như cái hình bạn gửi đâu nhé. Việc chỉnh sửa lại nhường cho bạn hỉ.

Filename: 122437_xap.lsp

Trang 43/308

43