Chuyển đến nội dung
Diễn đàn CADViet
Duong Nhat Duy

Lisp Insert Block, đối tượng hàng loạt

Các bài được khuyến nghị

Vào lúc 14/9/2024 tại 22:02, lanvientkh đã nói:

Dear bạn Nhất, Lisp bạn rất hay nhưng không chèn được các block phụ kiện nước như hình bên dưới, mình có sưu tầm được Lisp này nhưng phụ kiện tạo ra không phải  block mà là poline (cũng tạm xài được). Nhưng phụ kiện tạo ra hơi lớn và lisp cũng hay bị lỗi tạo ra các fitting không đúng như hình mong muốn, mình không rành lisp lắm nhờ bạn hỗ trợ cách chỉnh to nhỏ phụ kiện này được không, cảm bạn ơn nhé.

Chỉnh to nhỏ bạn thử sửa 2 số trong đoạn này xem được không:

(setq len 80)
(setq width 20)

Còn về vấn đề thỉnh thoảng lỗi thì mình chịu nhé, bản thân lisp mình viết không những thỉnh thoảng mà còn thường xuyên lỗ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

bạn nên kiếm bộ dynamic block phụ kiện ống uPVC (trên youtube đầy người share). Xong sử dụng lisp thống kê của Duy để thống kê là ok nhất.

Chứ lisp này vẽ ra polyline rồi thống kê = cơm nó ko hay.

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

mình muốn đổi sang tiếng nhật để dùng lisp này, bác có  thể cung cấp cái file .dcl đc ko. tại sửa chỉ sửa được ở các dòng lệnh muốn sửa ở cái bảng biểu nữa 

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
1 giờ} trướ}c, Hungtakigami đã nói:

mình muốn đổi sang tiếng nhật để dùng lisp này, bác có  thể cung cấp cái file .dcl đc ko. tại sửa chỉ sửa được ở các dòng lệnh muốn sửa ở cái bảng biểu nữa 

File .lsp mã nguồn mở mà bạn, bạn vào lấy rồi sửa lại tên tác giả cũng được mà ?

DUY_INSERT
: dialog
	{
	label = "Insert+ v1.04";
	: column
		{
		: boxed_row
			{
			label = "\U+0110\U+1ED1i t\U+01B0\U+1EE3ng Insert";
			: boxed_column
				{
				: toggle { key = "3DUY-INS-BLK-P"; label = "Block"; }
				: radio_button { key = "3DUY-INS-BLK-CMD"; label = "Ch\U+1ECDn trong khi th\U+1EF1c hi\U+1EC7n l\U+1EC7nh"; }
				: radio_button { key = "3DUY-INS-BLK-SEL"; label = "Khai báo Block"; }
				: button { key = "3DUY-INS-BUT1"; label = "Select Block"; }
				: popup_list { key = "3DUY-INS-BLK"; label = "Name"; edit_width = 15; }
				: popup_list { key = "3DUY-INS-BLK-LAY"; label = "Layer"; edit_width = 15; }
				: edit_box { key = "3DUY-INS-BLK-SC"; label = "Scale"; edit_width = 7; }
				: radio_button { key = "3DUY-INS-BLK-GRP"; label = "Khai báo nhóm Block"; }
				: button { key = "3DUY-INS-BUT1A"; label = "Select Blocks"; }
				: text { key = "3DUY-INS-BLK-TXT"; value = "Nothing selected"; }
				}
			: boxed_column
				{
				: toggle { key = "3DUY-INS-OBJ-P"; label = "Objects"; }
				: radio_button { key = "3DUY-INS-OBJ-CMD"; label = "Ch\U+1ECDn trong khi th\U+1EF1c hi\U+1EC7n l\U+1EC7nh"; }
				: radio_button { key = "3DUY-INS-OBJ-SEL"; label = "Khai báo Objects"; }
				: button { key = "3DUY-INS-BUT2"; label = "Select Objects"; }
				: text { key = "3DUY-INS-OBJ-TXT"; value = "Nothing selected"; }
				: spacer { height = 10; }
				}
			: boxed_column
				{
				: toggle { key = "3DUY-INS-TLT-P"; label = "Chèn Text lý trình (IDT, IAX, ME1, ME2)"; }
				: toggle { key = "3DUY-INS-TLT-ATT"; label = "\U+0110i\U+1EC1n lý trình vào Block Att"; }
				: toggle { key = "3DUY-INS-TLT-A"; label = "Nh\U+1EADp lý trình c\U+1ED9ng thêm"; }
				: toggle { key = "3DUY-INS-TLT-KM"; label = "\U+0110i\U+1EC1n theo \U+0111\U+1ECBnh d\U+1EA1ng: Km0+0.00"; }
				: text { key = "3DUY-INS-TLT-PT"; value = "\U+0110i\U+1EC3m chèn Text"; }
				: radio_button { key = "3DUY-INS-TLT-PT0"; label = "T\U+1EA1i \U+0111\U+01B0\U+1EDDng d\U+1EABn"; }
				: radio_button { key = "3DUY-INS-TLT-PT1"; label = "T\U+1EA1i \U+0111i\U+1EC3m \U+0111\U+1EB7t Block/Objects"; }
				: edit_box { key = "3DUY-INS-TLT-HEI"; label = "Cao ch\U+1EEF"; edit_width = 7; }
				: edit_box { key = "3DUY-INS-TLT-OFF"; label = "Offset"; edit_width = 7; }
				: popup_list { key = "3DUY-INS-TLT-ANG"; label = "Góc xoay Text"; edit_width = 14; }
				}
			}
		: boxed_row
			{
			label = "Cài \U+0111\U+1EB7t";
			: column
				{
				: edit_box { key = "3DUY-INS-OFF"; label = "Offset"; edit_width = 7; }
				: edit_box { key = "3DUY-INS-ANG"; label = "Góc xoay c\U+1ED9ng thêm   "; edit_width = 7; }
				: spacer { height = 3; }
				}
			spacer_1;
			: column
				{
				: toggle { key = "3DUY-INS-2SIDE"; label = "Insert c\U+1EA3 2 bên (IDT và ME1,2)"; }
				: toggle { key = "3DUY-INS-PLUS-P"; label = "R\U+1EA3i theo c\U+1EA5p s\U+1ED1 c\U+1ED9ng (ME1,2)"; }
				: toggle { key = "3DUY-INS-ALI-LR"; label = "T\U+1EF1 \U+0111\U+1ED9ng xoay theo trái/ph\U+1EA3i \U+0111\U+01B0\U+1EDDng d\U+1EABn (IDT)"; }
				spacer_1;
				}
			: column
				{
				: toggle { key = "3DUY-INS-ALI"; label = "Xoay theo \U+0111\U+01B0\U+1EDDng d\U+1EABn"; }
				: radio_button { key = "3DUY-INS-ALI-DEF"; label = "M\U+1EB7c \U+0111\U+1ECBnh"; }
				: radio_button { key = "3DUY-INS-ALI-N"; label = "H\U+01B0\U+1EDBng B\U+1EAFc"; }
				: radio_button { key = "3DUY-INS-ALI-S"; label = "H\U+01B0\U+1EDBng Nam"; }
				}
			}
		: boxed_column
			{
			label = "Tác gi\U+1EA3";
			: text { key = "3DUY-LIENHE"; value = "3Duy  |  Phone: 0922161194  |  Email: 3Duy3Duy@gmail.com"; }
			}
		: row
			{
			: spacer { width = 15; }
			: button { key = "accept"; label = "OK"; is_default = true; fixed_width = true ; width = 13 ;}
			: button { key = "cancel"; label = "Cancel"; is_default = false; is_cancel = true; fixed_width = true ; width = 13 ;}
			: button { key = "3DUY-INS-INFO"; label = "Info" ; fixed_width = true ; width = 13 ;}
			: spacer { width = 15; }
			}
		}
	}

 

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

image.thumb.png.a919740aaaabb4335538e2df375e5e76.png

 VÍ DỤ MÌNH MUỐN CHÈN CÁI BLOCK 1-1 KIA TỪ LINE GỐC OFFET LÊN 80-80, NHƯNG TRONG TL THÌ MÌNH CHỈ CÓ CHỌN DC 80 THÔI, CÓ CÁCH NÀO ĐỂ BLOCK CỦA MÌNH NÓ NẰM ĐÚNG CHỖ HÌNH TRÒN KIA KO BẠN, 2 LINE PHỤ KIA MÌNH VẼ THÊM MINH HỌA. ĐAI LOẠI LÀ TỪ ĐƯỜNG GÓC OFFSET 80-80 VÀ GIAO NHAU Ở ĐÂU THÌ CHÈN BLOCK VÔ ĐÓ Ý

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
59 phút trước, Hungtakigami đã nói:

image.thumb.png.a919740aaaabb4335538e2df375e5e76.png

 VÍ DỤ MÌNH MUỐN CHÈN CÁI BLOCK 1-1 KIA TỪ LINE GỐC OFFET LÊN 80-80, NHƯNG TRONG TL THÌ MÌNH CHỈ CÓ CHỌN DC 80 THÔI, CÓ CÁCH NÀO ĐỂ BLOCK CỦA MÌNH NÓ NẰM ĐÚNG CHỖ HÌNH TRÒN KIA KO BẠN, 2 LINE PHỤ KIA MÌNH VẼ THÊM MINH HỌA. ĐAI LOẠI LÀ TỪ ĐƯỜNG GÓC OFFSET 80-80 VÀ GIAO NHAU Ở ĐÂU THÌ CHÈN BLOCK VÔ ĐÓ Ý

Bạn nêu thiếu dữ kiện đề bài rồi:

- Đối tượng chèn là block 1-1 như hình thì ok mình đã hiểu

- Nhóm đối tượng để chèn block 1-1 vào thì chưa cụ thể: "Line gốc" cụ thể là như thế nào, đề bài có phải có nhiều cụm line gốc giống hệt nhau như hình hay xiên xẹo khác nhau ?

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

Trong lenh IDT có chọn được nhiều đường dẫn cùng 1 lúc ko bác. lúc dùng lênh ITL thiết lập insert 2 bên rồi mà vô lệnh IDT ko sử dụng đc, chỉ insert 1 bên. bác xem có đúng ko ạ. 

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
1 giờ} trướ}c, Hungtakigami đã nói:

Trong lenh IDT có chọn được nhiều đường dẫn cùng 1 lúc ko bác. lúc dùng lênh ITL thiết lập insert 2 bên rồi mà vô lệnh IDT ko sử dụng đc, chỉ insert 1 bên. bác xem có đúng ko ạ. 

- IDT trên nhiều đường dẫn: cái này mình thấy hơi ít ứng dụng, bạn chịu khó đợi đến khi có nhiều nhiều người cùng góp ý phần này nhé :D

- IDT insert 2 bên chỉ nhận khi đã nhập khoảng cách offset trong ITL nhé bạn, nếu đã nhập thì có thể do lỗi, bạn vui lòng gửi kèm hình ảnh.

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

e ko gửi dc ảnh lên ko hiểu sao bị lỗi.

Ví dụ e có 1 đoạn line  nghiêng 45 độ(có line 50 độ). muốn chèn lỗ phi 10 vào 2 đầu đoạn  line đó cách 1 khoảng là 5mm, và hướng theo line đó.

e sử dụng IDT thì chỉ cho ra 1 đầu của đoạn thẳng, còn đầu còn lại thì ko dc. tại có nhiều line  như vậy nên ko biết lisp của mình có cách nào ko nhỉ.

hiện tại e dùng IPL để vẽ tâm đường tròn tại 2 đầu của line, rồi tiếp tục dùng IPL chèn phi10 vào tại giao điểm của đường tròn vs đường line, sau đó xóa phi 10 ở 2 đầu line. thấy hơi cự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
1 giờ trước, Hungtakigami đã nói:

e ko gửi dc ảnh lên ko hiểu sao bị lỗi.

Ví dụ e có 1 đoạn line  nghiêng 45 độ(có line 50 độ). muốn chèn lỗ phi 10 vào 2 đầu đoạn  line đó cách 1 khoảng là 5mm, và hướng theo line đó.

e sử dụng IDT thì chỉ cho ra 1 đầu của đoạn thẳng, còn đầu còn lại thì ko dc. tại có nhiều line  như vậy nên ko biết lisp của mình có cách nào ko nhỉ.

hiện tại e dùng IPL để vẽ tâm đường tròn tại 2 đầu của line, rồi tiếp tục dùng IPL chèn phi10 vào tại giao điểm của đường tròn vs đường line, sau đó xóa phi 10 ở 2 đầu line. thấy hơi cực ạ.

Bạn chỉ cần dán code này vào gemini sẽ có câu trả lời chính xác. 

Gemini: Autolisp, tao muốn viết hàm để chèn một block tên là "phi10" trên curve với khoảng cách Dist tại 2 điểm curve.StartPoint và curve.EndPoint. Góc chèn được lấy theo vector vlax-curve-GetFirstDeriveractive. Tại điểm đầu lấy giá trị Dist, điểm sau lấy - Dist. Dùng entmake để chè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
2 giờ trước, Hungtakigami đã nói:

e ko gửi dc ảnh lên ko hiểu sao bị lỗi.

Ví dụ e có 1 đoạn line  nghiêng 45 độ(có line 50 độ). muốn chèn lỗ phi 10 vào 2 đầu đoạn  line đó cách 1 khoảng là 5mm, và hướng theo line đó.

e sử dụng IDT thì chỉ cho ra 1 đầu của đoạn thẳng, còn đầu còn lại thì ko dc. tại có nhiều line  như vậy nên ko biết lisp của mình có cách nào ko nhỉ.

hiện tại e dùng IPL để vẽ tâm đường tròn tại 2 đầu của line, rồi tiếp tục dùng IPL chèn phi10 vào tại giao điểm của đường tròn vs đường line, sau đó xóa phi 10 ở 2 đầu line. thấy hơi cực ạ.

Bạn xem gửi file đượ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
Vào lúc 20/6/2025 tại 14:21, Hungtakigami đã nói:

image.thumb.png.a919740aaaabb4335538e2df375e5e76.png

 VÍ DỤ MÌNH MUỐN CHÈN CÁI BLOCK 1-1 KIA TỪ LINE GỐC OFFET LÊN 80-80, NHƯNG TRONG TL THÌ MÌNH CHỈ CÓ CHỌN DC 80 THÔI, CÓ CÁCH NÀO ĐỂ BLOCK CỦA MÌNH NÓ NẰM ĐÚNG CHỖ HÌNH TRÒN KIA KO BẠN, 2 LINE PHỤ KIA MÌNH VẼ THÊM MINH HỌA. ĐAI LOẠI LÀ TỪ ĐƯỜNG GÓC OFFSET 80-80 VÀ GIAO NHAU Ở ĐÂU THÌ CHÈN BLOCK VÔ ĐÓ Ý


IPL chèn block vào giao cắt của PLINE. Do vậy nếu bạn có cả 1 cái lưới ô 80x80 (rất nhiều line giao nhau) thì IPL chèn được tất. Nếu không muốn dính vào line gốc thì nối 2 line gốc lại, offset 80 rồi IPL sẽ đúng cái góc giao đó. Ý là không để line phụ chạm vào line gốc, là rải được hết. 

 

Vào lúc 17/9/2025 tại 07:44, Hungtakigami đã nói:

e ko gửi dc ảnh lên ko hiểu sao bị lỗi.

Ví dụ e có 1 đoạn line  nghiêng 45 độ(có line 50 độ). muốn chèn lỗ phi 10 vào 2 đầu đoạn  line đó cách 1 khoảng là 5mm, và hướng theo line đó.

e sử dụng IDT thì chỉ cho ra 1 đầu của đoạn thẳng, còn đầu còn lại thì ko dc. tại có nhiều line  như vậy nên ko biết lisp của mình có cách nào ko nhỉ.

hiện tại e dùng IPL để vẽ tâm đường tròn tại 2 đầu của line, rồi tiếp tục dùng IPL chèn phi10 vào tại giao điểm của đường tròn vs đường line, sau đó xóa phi 10 ở 2 đầu line. thấy hơi cực ạ.

 

Tương tự như cái ý trên. nếu các line cần chèn lỗ song song với nhau, chỉ cần làm line phụ chạy qua, cách đầu - đuôi đều 5mm, IPL sẽ rải theo giao cắt đầy đủ không thiếu lỗ nào :D

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

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay

×