こちらの続きです。
毛を生やす1 - C#ATIA
前回は曲面で行いました。・・・非常に眠かったです。
曲面だとフサフサなのですが、境界線が直線の平面の場合はがっかりです。

ん!僕の頭を見ないで欲しい。
要はMeshManagerを使うと、STLでエクスポートした際の頂点や頂点の法線が
エクスポートすることなく手に入ります。
でも、これではさすがに寂しい。毛量が欲しい。
そこでもう少し調べると、TriangleMeshCalculatorオブジェクトがあり、Mesh生成の条件が
調整できそうです。
Help
そこで、MyExecutePreviewHandlerクラスのnotifyメソッドを修正します。
(数値的にどれぐらいが理想的かわかりませんが)
・・・ class MyExecutePreviewHandler(core.CommandEventHandler): def __init__(self): super().__init__() def notify(self, args: core.CommandEventArgs): core.Application.get().log(args.firingEvent.name) global _selFace face: fusion.BRepFace = _selFace.selection(0).entity des: fusion.Design = face.body.parentComponent.parentDesign root: fusion.Component = des.rootComponent # triMesh: fusion.TriangleMesh = face.meshManager.displayMeshes[0] meshCalculator: fusion.TriangleMeshCalculator = face.meshManager.createMeshCalculator() meshCalculator.maxAspectRatio = 1.0 meshCalculator.maxSideLength = 1.0 triMesh: fusion.TriangleMesh = meshCalculator.calculate() nodes = list(triMesh.nodeCoordinates) normals = list(triMesh.normalVectors) skt: fusion.Sketch = root.sketches.add(root.xYConstructionPlane) skt.isComputeDeferred = True skt.arePointsShown = False for p1, v in zip(nodes, normals): p2: core.Point3D = p1.copy() p2.translateBy(v) skt.sketchCurves.sketchLines.addByTwoPoints(p1, p2) skt.isComputeDeferred = False ・・・
これで面を選択すると

おぉ素晴らしい!! 育毛効果抜群じゃないですか!
もちろん曲面だってフサフサのまま。

未来は明るい。