使用环境:
1. CAD2007 其他版本可自行测试;
2. python3.6.13 其他版本自行测试;
3. pyautocad第三方python库;安装方法可自行百度;
使用方法:
1. 使用CAD软件打开需要转点云的CAD DWG等模型,并保持常驻电脑后台;缩小即可;
2. 运行以下代码查找CAD模型中的线类,并获得起终点,在起终点之间以等差数列的形式生成点,形成点云矩阵,并存储;公差由自己指定;
# cad转点云
import math
import pyautocad
def extract_coordinates(tolerance):
""" tolerance:公差 """
acad = pyautocad.Autocad()
doc = acad.ActiveDocument
modelspace = doc.ModelSpace
doc_name = acad.doc.Name
coordinates = []
for entity in modelspace:
if entity.EntityName == 'AcDbLine':
start_point = entity.StartPoint
end_point = entity.EndPoint
length = math.sqrt((end_point[0] - start_point[0])**2 + (end_point[1] - start_point[1])**2)
if length >= tolerance:
num_points = int(length / tolerance)
x_increment = (end_point[0] - start_point[0]) / num_points
y_increment = (end_point[1] - start_point[1]) / num_points
for i in range(num_points + 1):
x = start_point[0] + (i * x_increment)
y = start_point[1] + (i * y_increment)
#print(f"Point {i+1}: ({x}, {y})")
coordinates.append([x,y])
return coordinates,doc_name
coordinates,doc_name = extract_coordinates(tolerance=5)