我的最终目标如下:
我有一个巨大的点数据集,表示一个部件将如何逐层3D打印.我需要通过这些点创建一条直线并沿着这条直线挤出一个圆(所以重建部件,因为它将在以后打印).
我最初尝试使用样条曲线,但是这会尝试创建一条平滑线并且根本不遵循这些点.我尝试更改minDeg和maxDeg选项,但这仍然没有足够的帮助来创建我需要的实际曲线.
所以我一次尝试在两个点之间创建一个样条线,然后在创建一条线时将它们全部加在一起.这看起来很有希望,因为现在我确实得到了实际的尖角和线条通过精确点.但是,现在当我尝试沿着它挤出时,挤出型材的法线不会随着钢丝的角度而变化.
我花了最近4天的时间来解决这个问题,尝试了很多论坛和问题,但感觉完全迷失在pythonocc(opencascade)的世界里.
我的代码如下:
from __future__ import print_function
from OCC.gp import gp_Pnt, gp_Ax2, gp_Dir, gp_Circ
from OCC.GeomAPI import GeomAPI_PointsToBSpline
from OCC.TColgp import TColgp_Array1OfPnt
from OCC.BRepBuilderAPI import BRepBuilderAPI_MakeEdge,
BRepBuilderAPI_MakeWire, BRepBuilderAPI_MakeFace
from OCC.BRepOffsetAPI import BRepOffsetAPI_MakePipe
from OCC.Display.SimpleGui import init_display
display, start_display, add_menu, add_function_to_menu = init_display()
def pipe():
# the bspline path, must be a wire
# This will later be in a for loop but this is merely to validate the method
using three different points.
array …Run Code Online (Sandbox Code Playgroud)