ソリッドをサーフェス化したい場面はそれ程多くないとは
思いますが、忘れつつあるのでテストしました。
'vba Option Explicit Sub main() Dim pDoc As partDocument Set pDoc = CATIA.ActiveDocument Dim pt As Part Set pt = pDoc.Part Dim bdy As Body Set bdy = pt.Bodies.Item(1) solid_to_surface bdy MsgBox "Done" End Sub Private Function solid_to_surface( _ ByVal bdy As Body) Dim pt As Part Set pt = bdy.parent.parent Dim shapes As shapes Set shapes = bdy.shapes Dim ref As Reference Set ref = pt.CreateReferenceFromObject( _ shapes.Item(shapes.count) _ ) Dim hsFact As HybridShapeFactory Set hsFact = pt.HybridShapeFactory Dim direct As HybridShapeDirection Set direct = hsFact.AddNewDirectionByCoord(1#, 0#, 0#) Dim trans As HybridShapeTranslate Set trans = hsFact.AddNewEmptyTranslate() With trans .ElemToTranslate = ref .VectorType = 0 .Direction = direct .DistanceValue = 0# .VolumeResult = False End With Dim hBody As HybridBody Set hBody = pt.HybridBodies.add() hBody.AppendHybridShape trans pt.UpdateObject trans Set ref = pt.CreateReferenceFromObject(trans) Dim surfExp As HybridShapeSurfaceExplicit Set surfExp = hsFact.AddNewSurfaceDatum(ref) hBody.AppendHybridShape surfExp pt.UpdateObject surfExp hsFact.DeleteObjectForDatum trans End Function
Fusion360の場合は、サーフェスが閉じた状態になると勝手に
ソリッドになりますが、CATIAの場合は意図的にソリッド化する
必要がありますよね。
逆に言えば、意図的に閉じたサーフェスをFusion360で作り出す事が
難しいです。
サーフェス化するには単純にGSDの機能を利用すれば良いだけ
なのですが、今回は移動量0の移動を行いました。
他の機能でも出来ますね。
但し、過去に抽出でやった時にデータの状態によっては意図しない
場合がありました。原因は分かっていますが、内緒です。
移動なら大丈夫でしょう。