我正在尝试使用匀称来识别形状所使用的区域以及将在CNC路由器上切割它的工具所使用的区域.使用ezdxf从dxf图形导入形状.
刀具路径可以是矩形(如果它们由沿直线的锯盘切割)或一组段(如果它们由铣削刀头布线).在这两种情况下,我都可以使用LineString.buffer()自动创建偏移并找到工具使用的区域.
我使用的形状很合理,因为我认为它是最好的工具,可以找出形状是否相互重叠(使用union()将所有工具合并为一个形状并overlaps()找到干涉).如果有更好的工具用于此目的,请告诉我.
buffer() 在创建用于表示角落弧线的线段方面做得很好.
有没有办法创建段来表示形状本身的弧?
例如,如何在此形状的左侧创建圆弧?我需要创建自己的(慢)python函数吗?还是有优化的匀称方式?

用python创建自己的弧形方法不一定很慢。Numpy非常适合沿着这些路线进行操作,并且Shape旨在与numpy良好地互操作。
例如,
import numpy as np
import shapely.geometry as geom
# Define the arc (presumably ezdxf uses a similar convention)
centerx, centery = 3, 4
radius = 2
start_angle, end_angle = 30, 56 # In degrees
numsegments = 1000
# The coordinates of the arc
theta = np.radians(np.linspace(start_angle, end_angle, numsegments))
x = centerx + radius * np.cos(theta)
y = centery + radius * np.sin(theta)
arc = geom.LineString(np.column_stack([x, y]))
Run Code Online (Sandbox Code Playgroud)
在我的机器上,用起始角度和结束角度之间的1000个点近似圆弧大约需要3毫秒(包括将其转换为整齐的LineString)。
| 归档时间: |
|
| 查看次数: |
2207 次 |
| 最近记录: |