BIM

Polyline trong CAD: bốn nét rời thành một đường đo được diện tích

Polyline trong CAD gộp nhiều nét thành một đối tượng đo được diện tích. Bài đo lệnh join, lệnh pe và cả trường hợp giữa hai nét còn khe hở.

  • TS. Đỗ Quốc Hoàng
  • 8 phút đọc
Hai hình vuông giống hệt nhau, một bên là bốn nét rời còn một bên là một đường đo được diện tích Ảnh: Ảnh chụp trên AutoCAD 2027 tại Viện

Cần biết diện tích một khu đất đã vẽ xong. Bấm chọn thì ra bốn nét rời, không có con số nào. Đường bao ấy phải là polyline trong CAD thì máy mới trả về diện tích.

Bài này đo cách gộp bốn nét ấy lại, đo cả trường hợp giữa hai nét còn khe hở, trên AutoCAD 2027 tại Viện. Muốn học trọn cách dựng hình chính xác thì xem khóa AutoCAD Xây Dựng.

Lệnh polyline trong CAD vẽ ra một đối tượng, không phải nhiều nét

Chúng tôi vẽ một đường gấp khúc ba điểm rồi đọc lại đối tượng vừa sinh ra.

Đo đượcKết quả
Loại đối tượngLWPOLYLINE
Số đỉnh3
Bề rộng0
Biến PLINETYPE2

Ba điểm, hai đoạn, mà chỉ một đối tượng. Đó là toàn bộ khác biệt so với lệnh vẽ đường thẳng thường, vốn sinh ra mỗi đoạn một đối tượng riêng. Cách lệnh ấy hoạt động chúng tôi viết ở bài vẽ đường thẳng trong CAD.

Dòng nhắc chép nguyên văn từ bản 2027 cho thấy ngay những gì lệnh này làm được mà lệnh vẽ đường thẳng không làm được.

Specify next point or [Arc/Close/Halfwidth/Length/Undo/Width]:

Lựa chọn Arc chuyển sang vẽ cung tròn nối tiếp ngay trong cùng một đối tượng, Close khép kín, còn Width đổi bề rộng nét.

Lệnh pl trong CAD mà nét bị to: thủ phạm tên PLINEWID

Đây là câu hỏi rất hay gặp, và đo ra thì gọn.

Biến PLINEWID giữ bề rộng ngầm định của đường sắp vẽ. Máy chúng tôi đo được giá trị 0, tức nét mảnh. Chúng tôi đặt nó thành 30 rồi vẽ lại, và đối tượng mới mang mã bề rộng đúng bằng 30.

PLINEWIDBề rộng ghi trong đối tượng
00
3030

Vậy nếu nét vẽ ra bỗng dưng to đùng thì không phải hỏng gì cả. Ai đó, hoặc chính lựa chọn Width trong lần vẽ trước, đã đặt biến ấy khác 0. Gõ PLINEWID, nhập 0, là trở lại bình thường.

Nét đã vẽ rồi thì sửa bằng lệnh hiệu chỉnh đường đa tuyến, chọn Width rồi nhập 0.

Lệnh JOIN nối được gì và từ chối gì

Nhiều bài hướng dẫn viết rằng lệnh này chỉ dùng được cho đường vẽ bằng lệnh polyline. Chúng tôi đo ba tình huống và kết quả khác hẳn.

Tình huốngMáy trả lờiKết quả
Hai nét thẳng hàng, chạm nhau1 line joined to sourcecòn 1 nét
Hai nét thẳng hàng, hở 501 line joined to sourcecòn 1 nét
Ba nét gấp khúc vuông góc0 lines joined to source, 2 objects discarded from the operationvẫn 3 nét

Hai dòng đầu cho thấy lệnh này làm việc tốt với nét thẳng thường, thậm chí bắc cầu qua khe hở mà không cần khai gì thêm. Dòng thứ ba mới là giới hạn thật: các nét phải nằm trên cùng một đường thẳng. Gấp khúc là nó từ chối, và câu trả lời của máy nói thẳng rằng hai đối tượng đã bị loại khỏi thao tác.

Thêm một chi tiết đáng nhớ: nối xong, kết quả vẫn là một nét thẳng chứ không thành đường đa tuyến. Muốn ra đường đa tuyến thì phải dùng lệnh ở mục sau.

Chuyển line thành polyline trong CAD: lệnh pe trong CAD làm cả cụm một lượt

Đây là lệnh giải quyết đúng bài toán đầu bài. Chúng tôi vẽ một hình vuông 2000 nhân 1500 bằng bốn nét rời, rồi gộp lại và đo.

Bốn nét rời và một đường đa tuyến Ảnh: Hai hình vuông vẽ y hệt nhau. Trái: bốn nét thẳng rời, đếm bằng máy ra 4 đối tượng. Phải: sau khi gộp, còn một đường đa tuyến khép kín và lệnh đo diện tích trả về 3000000, đúng bằng 2000 nhân 1500
Phép đoTrướcSau
Số đối tượng41
Loại đối tượngLINELWPOLYLINE
Diện tích đọc đượckhông có3000000

Con số 3000000 kiểm được ngay: 2000 nhân 1500. Máy còn in ra 3 segments added to polyline, tức ba nét đã được nhập vào nét thứ nhất.

Trình tự gõ gọn trong năm nhịp. Gõ PE, chọn lựa chọn Multiple, quét chọn cả cụm, Enter, rồi trả lời Y cho câu hỏi chuyển đổi và chọn Join.

Hai dòng nhắc đáng chép nguyên văn, vì chính chúng làm nhiều người bỏ cuộc giữa chừng.

Convert Lines, Arcs and Splines to polylines [Yes/No]? <Y>

Enter fuzz distance or [Jointype] <0.0>:

Câu đầu hỏi có đổi nét thẳng thành đường đa tuyến không, trả lời Y. Câu sau hỏi khoảng hở cho phép, và đó là chủ đề của mục ngay dưới.

Khe hở nhỏ: tăng fuzz thôi chưa đủ

Lời khuyên quen thuộc là "cứ tăng fuzz lên là nối được". Chúng tôi đo và thấy lời khuyên ấy thiếu một nửa.

Hai nét thẳng hàng, giữa chúng hở đúng 50. Fuzz đặt 100, tức thừa sức phủ khe hở ấy. Rồi thử lần lượt ba kiểu nối mà lệnh cho chọn.

Kiểu nốiMáy trả lờiKết quả
Extend, kiểu ngầm định0 segments added to polylinevẫn 2 đối tượng
Add2 segments added to polylinecòn 1 đối tượng
Both2 segments added to polylinecòn 1 đối tượng

Dòng đầu là chỗ làm người dùng nản: fuzz đủ lớn mà vẫn không nối. Lý do nằm ngay trong mô tả của Autodesk trên trang PEDIT. Kiểu Extend"Joins the selected polylines by extending or trimming the segments to the nearest endpoints."

Hai đoạn nằm trên cùng một đường thẳng thì kéo dài thế nào cũng không có điểm giao để dừng lại. Chúng tôi kiểm lại bằng đối chứng: hai đoạn khác phương, cũng hở như thế, kiểu Extend nối được ngay, máy in 1 segments added to polyline.

Vậy quy tắc gọn lại thế này. Nét gấp khúc thì kiểu ngầm định là đủ; nét thẳng hàng có khe hở thì phải chọn Add hoặc Both, mà Autodesk mô tả là "Joins the selected polylines by adding a straight segment between the nearest endpoints."

Lệnh nối các line thành polyline trong CAD rồi thì được gì

Việc gộp không phải để cho đẹp. Bốn cái lợi đo được hoặc thấy ngay.

Đo được diện tích và chu vi. Đây là lợi ích lớn nhất trên bản vẽ xây dựng, và là con số 3000000 ở bảng trên.

Chọn một phát là chọn cả đường bao. Cụm nét rời phải quét chọn, dễ sót một đoạn mà không biết.

Bo góc, vát góc cả đường một lượt. Cách bo và vát chúng tôi viết ở bài fillet trong CAD.

Đặt được bề rộng nét theo đối tượng, thay vì phải đổi bề dày nét của cả lớp.

Ngược lại, gộp rồi thì sửa một đoạn riêng sẽ vướng hơn, và với bản vẽ rất nhiều đối tượng thì việc dọn dẹp lại là chuyện khác, chúng tôi viết ở bài làm nhẹ bản vẽ CAD.

Đường lui thì luôn có. Chúng tôi vẽ một đường đa tuyến khép kín bốn cạnh rồi phá nó ra bằng lệnh EXPLODE, và đếm lại được đúng 4 nét thẳng, còn đường đa tuyến ban đầu thì không còn trong bản vẽ nữa. Nghĩa là gộp và phá là hai chiều đi lại được, nhưng phá xong thì diện tích mất theo, vì bốn nét rời không mang thông tin ấy.

Ba điều hay nghe nhưng không đúng

Điều hay ngheThực tế đo trên bản 2027
Lệnh JOIN chỉ làm được với đường vẽ bằng lệnh polylineNó nối hai nét thẳng thường, kể cả khi hở 50
Nét gấp khúc thì JOIN cũng nối đượcMáy trả về 0 lines joined to source và loại hai đối tượng ra
Có khe hở thì cứ tăng fuzz là nối đượcKiểu ngầm định Extend vẫn báo 0 segments added, phải đổi sang Add

Câu hỏi thường gặp

Vì sao chọn đường bao mà không ra diện tích?

Vì đó là các nét rời chứ chưa phải một đường đa tuyến. Gộp lại bằng lệnh PE với lựa chọn Multiple rồi Join là đọc được.

Nét vẽ ra bị to thì sửa thế nào?

PLINEWID rồi nhập 0. Chúng tôi đo và bề rộng ghi trong đối tượng đúng bằng giá trị của biến này lúc vẽ.

Lệnh JOIN và lệnh PE khác nhau chỗ nào?

JOIN chỉ nối các nét nằm trên cùng một đường thẳng và cho lại một nét thẳng. PE nối được cả cụm gấp khúc và cho ra một đường đa tuyến.

Có khe hở nhỏ mà không nối được?

Vào lựa chọn Jointype rồi chọn Add hoặc Both, sau đó mới nhập khoảng hở cho phép. Kiểu ngầm định không nối được hai đoạn thẳng hàng.

Gộp xong có tách lại được không?

Được, bằng lệnh EXPLODE. Chúng tôi phá một đường đa tuyến bốn cạnh và đếm lại đúng 4 nét thẳng. Diện tích thì mất theo.

Về tác giả

TS. Đỗ Quốc Hoàng — Phó Viện trưởng Viện Tin học Xây dựng – Trường Đại học Xây dựng Hà Nội, chuyên gia lập trình phần mềm trong xây dựng