4

Python で b スプライン サーフェスを作成および使用するためのライブラリを作成し、並列scipy.interpolate.RectBivariateSpline()インスタンスを利用してノット ベクトル、(X、Y、Z) コントロール ポイント メッシュ、および u と v の角度 ((t、c、 k) 表面評価が実行されるタプル)。また、CAD パッケージからエクスポートされたサーフェス データを読み取るための STEP パーサーも作成しました。ファイル内のエンティティから (t, c, k) 値を取得し、b_spline_surface_with_knotsそれらを自分のオブジェクトに詰め込みます。Surface ライブラリは私にとってはかなりうまく機能しますが、STEP パーサーは面倒で、使用するたびにさまざまな方法で失敗します。そこで、次のように「実際の」STEP パーサーを使用してみました。

from OCC.STEPControl import STEPControl_Reader
from OCC.IFSelect import IFSelect_RetDone, IFSelect_ItemsByEntity

step_reader = STEPControl_Reader()
status = step_reader.ReadFile('c:/LPT/nomdata/lpt3.stp')

if status == IFSelect_RetDone:  # check status
    failsonly = False
    step_reader.PrintCheckLoad(failsonly, IFSelect_ItemsByEntity)
    step_reader.PrintCheckTransfer(failsonly, IFSelect_ItemsByEntity)

    ok = step_reader.TransferRoot(1)
    _nbs = step_reader.NbShapes()
    aResShape = step_reader.Shape(1)
else:
    print("Error: can't read file.")
    sys.exit(0)

今、私はこのaResShapeオブジェクトを持っていますが、IPython (またはグーグル) でそれを突き刺したり突っ込んだりする量は、表面を定義する (t、c、k) 値を取得する方法を明らかにしません。

誰かがこれらの値を明らかにする方法を教えてもらえますか? それとも、もう少し不透明な別の Python ベースの STEP パーサーがあるのでしょうか?

4

1 に答える 1