ボリュームの作成

現在、CUBITでは次の方法でVolumeを作成できます:

  1. 1つのSurfaceを3D Solidへスイープして、Surfaceから作成する、
  2. 既存のVolumeをオフセットして作成する、
  3. 1つ以上のSurfaceまたはSheet Bodyを延長して作成する、
  4. Curveを軸回りにスイープして作成する、
  5. 閉じたVolumeを構成できるSurface群をstitchして作成する、
  6. あるSurfaceから別のSurfaceへloftして作成する、または
  7. Surface Bodyを厚肉化して作成する。

2次元Bodyまたは3次元Bodyに属する平面Surfaceはスイープできます。また、非平面Faceの一部も正常にスイープできますが、現時点ではすべてがサポートされているわけではありません。以下ではVolumeの生成方法を説明します:

sweepコマンドには5つの形式があります。各形式の構文と詳細を以下に示します。最初の4形式で共通するオプションは次のとおりです:

draft_angle:このパラメータは、スイープしたSolidの側面がスイープ方向に対して傾く角度を指定します。プロファイルがスイープに伴って広がる、または狭まる角度と考えることもできます。既定値は0.0です。

draft_type:これはACIS関連のパラメータで、0以外のdraft angleを指定した場合に、スイープしたSolidの角部をどのように処理するかを指定します。既定値は0で、角部を延長して処理します。1も有効で、角部を丸めて(blendして)処理します。

anchor_entity:sweepコマンドの既定動作では、元のSurfaceを経路に沿って移動して新しい3D Solidを作成します。anchor_entityオプションを指定すると、元のSurfaceを元の位置に残したままスイープします。

include_mesh:このオプションは元のSurfaceと既存Meshを一緒にスイープし、メッシュ済みの3D Solidを作成します。メッシュサイズはDefault auto interval指定を用いて自動計算されます。

sweep操作は、正のVolumeを持つ有効なSolidを生成するよう設計されています。実際に操作を実行するSolid modeling kernelであるACIS自体は、sweepによって負のVolumeを持つSolid(すなわちvoid)を生成できます。

1. SurfaceをVector方向にSweep: Surfaceを指定Vector方向へ指定距離だけスイープします。スイープ距離の指定は任意で、省略すると指定Vectorの長さと同じ距離だけFaceをスイープします。Surfaceがすでにメッシュされている場合、include_meshオプションで下図のようにVolume meshを作成できます。keepオプションを指定すると、Volumeを作成しながら元のSurfaceを保持します。  

Sweep Surface {<surface_id_range>} Vector <x_vector y_vector z_vector> [Distance <distance_value>] [switchside]  [Draft_angle <degrees>] [Draft_type <0|1>][rigid][anchor_entity][include_mesh] [keep] [merge]

          

Surface mesh swept along a vector

2. Surfaceを軸回りにSweep: Surfaceを指定Vectorまたは軸の回りに、指定角度だけスイープします。回転軸は、始点とVectorの組み合わせ、または座標軸で指定します。この軸はスイープするSurfaceの平面内に存在する必要があります。stepsパラメータの既定値は0で、この場合は円形のスイープ経路になります。正の0以外の値nを指定すると、スイープ経路はn本の直線segmentで構成され、各segmentは回転軸に対して[(sweep_angle)/(steps-1)]の角度を張ります。Surfaceがすでにメッシュされている場合、include_meshオプションでVolume meshを作成できます。keepオプションを指定すると、Volumeを作成しながら元のSurfaceを保持します。  

Sweep Surface {<surface_id_range>} Axis {<xpoint ypoint zpoint xvector yvector zvector>|Xaxis|Yaxis|Zaxis} Angle <degrees> [switchside]  [Steps <number_of_sweep_steps>] [Draft_angle <degrees>] [Draft_type <0|1>][rigid][anchor_entity][include_mesh] [keep] [merge]

 

Surface swept around an axis of 50 degree angle

同じBodyに属する複数のSurfaceを指定すると、ACISがsweep操作をin-placeで実行するため、期待どおりに動作しません。Surfaceの範囲を指定する場合は、それぞれ異なるBodyに属している必要があります。

3. SurfaceをCurveに沿ってSweep: このコマンドは、平面SurfaceをCurveに沿ってスイープします:

Sweep Surface <surface_id_range> Along Curve <curve_id> [Draft_angle <degrees>] [Draft_type <0 | 1 | 2>] [Twist <degrees>][rigid][anchor_entity][include_mesh] [keep] [individual] [merge]

Curveのいずれか一端がSurfaceの平面上に存在し、かつCurveがSurfaceに接していない必要があります。Surfaceの向きとguide curveの関係は、スイープ全体を通して維持されます。rigidオプションを指定すると、Surfaceの向きはスイープ中ずっと固定されます。Curveに沿うSweepではdraft type 2も使用でき、これは角部を元のCurveから「natural」に延長する処理を意味します。

オプションの twist を指定すると、スイープしたSolidにguide curve回りのねじりを適用できます。指定する角度(degree)は、 総ねじり角 であり、スイープ経路全体にわたって適用されます。

volume_swept_with_twist.png

twist角を適用してCurveに沿ってスイープしたVolume。

Surfaceがすでにメッシュされている場合、include_meshオプションで下図のようにVolume meshを作成できます。keepオプションを指定すると、Volumeを作成しながら元のSurfaceを保持します。スイープ経路として複数のCurveを指定した場合、individualオプションを指定すると各Curveに沿って個別のVolumeを作成します。 

 

Volume generated by sweeping a surface along a reference curve

4. Surfaceを法線方向にSweep: このコマンドは、平面SurfaceをSurfaceに垂直な方向へスイープします:

Sweep Surface <surface_id_range> Perpendicular Distance <distance> [Switchside] [Draft_angle <degrees>] [Draft_type <integer>][anchor_entity][include_mesh] [keep] [merge]

スイープ方向を決定するため、スイープ対象の面は平面である必要があります。switchsideオプションを指定すると、スイープ方向が反転します。

 

keepオプションを指定すると元のSurfaceを保持します。SurfaceをSurface normalに沿ってスイープし、新しいVolumeを作成します。

Surfaceがすでにメッシュされている場合、include_meshオプションで下図のようにVolume meshを作成できます。keepオプションを指定すると、Volumeを作成しながら元のSurfaceを保持します。  

5. SurfaceをVolumeまでSweep: このコマンドは、SurfaceをVolumeまでスイープします。

Sweep Surface <surface_id_range> Target {Volume|Body} <id> [Direction {options}] [Plane {options}]

この direction キーワードを使用してスイープ方向を制御できます。省略するとCubitがスイープ方向を決定します(通常はスイープSurfaceの法線方向です)。また、 plane オプションを使用して停止平面を定義できます。

6. オフセット(Offset): 次のコマンドは、別のBodyまたはSurface群から指定距離だけオフセットしたBodyを作成します。新しいSurfaceは必要に応じて延長またはtrimされます。正の距離ではBodyが大きくなり、負の距離では小さくなります。

Create Body Offset [From] Body <id_range> Distance <value>

Create Sheet Offset From Surface <id_list> Offset <val> [Surface <id_list> Offset <val>] [Surface <id_list> Offset <val> ...] [Preview]

2つ目の形式では、SurfaceのリストからSheet Bodyを作成でき、各Surfaceに異なるオフセット距離を指定できます。現時点では、元のSurfaceがSolid Body上に存在する必要があります。

このオプションは、限定的なケースでは facet-based Surfaceにも使用できます。

7. SurfaceからSheetを延長: 次のコマンドは、別のBodyまたはSurface群から指定距離だけオフセットしたBodyを作成します。新しいSurfaceは必要に応じて延長またはtrimされます。正の距離ではBodyが大きくなり、負の距離では小さくなります。

Create Sheet Extended From Surface <id_list> [Intersecting <entity_list>] [Extended {Percentage|Absolute} <val>] [Preview]

このコマンドでは、複数のSurfaceを同時に延長できます。必要に応じて、この計算で交差させるBodyのリストを指定できます。また、最小面積サイズに対する割合または絶対距離でSurfaceのサイズを拡張できます。previewオプションで平面を事前表示できます。図1はextended absoluteオプションを使用して作成したSurface群を示します。

図1. 複数のSurfaceを延長して作成したSheet

8. Sweep Curve About Axis: CurveまたはCurve群を、指定軸回りに指定角度だけスイープします。軸の指定方法は Sweep Surface About Axisコマンドと同じです。steps、draft_angle、draft_typeオプションの意味は前述と同じです。Solidを作成するにはmake_solidオプションを指定する必要があります。指定しない場合はSolidではなくSurfaceが作成されます。rigidオプションを指定すると、CurveまたはCurve群は軸回りに回転せず、元の向きを保持します。

Sweep Curve <curve_id_range> {Axis <xpoint ypoint zpoint xvector yvector zvector>|Xaxis|Yaxis|Zaxis} Angle <degrees> [Steps <Number_of_sweep_steps>] [Draft_angle <degrees>] [Draft_type <integer>] [Make_solid] [Rigid]

9. SurfaceをStitch: 閉じたVolumeを構成する複数のSurfaceから、次のコマンドでBodyを作成できます。GeometryはACIS形式(IGES、STEP、fastqファイルなどからimportしたGeometry)である必要があります。このオプションは、限定的なケースでは facet-based Surfaceにも使用できます。

Create {Body|Volume} Surface <surface_id_range> [HEAL|Noheal] [Keep] [Sheet]

この heal オプションはSurface間の小さなgapを閉じようとします。一方、 noheal オプションを指定するとこの動作を無効にします。また、 keep オプションを指定すると元のSurfaceを保持します。

このコマンドを成功させるには、すべてのSurfaceが閉じたwater-tight Volumeを構成している必要があります。ただし、 sheet オプションを指定した場合は例外です。

この sheet オプションを指定するとopen Bodyを作成できます。Surface群が閉じたVolumeを構成している場合は、VolumeではなくSheet Bodyが作成されます。

境界がtolerance内に正確に収まっていない場合は、次のコマンドの方が有効なことがあります:

  

Stitch {Body|Volume} <id_range> [tolerance <value>] [no_tighten_gaps]

 

10. Surface同士をLoft: 2つのSurface間を「loft」して新しいBodyを作成できます。Solid BodyまたはSheet BodyのSurfaceをLoft Bodyの作成に使用できます。Loft Bodyを作成する際は、入力Surfaceと一致する2つのSurfaceが作成されます。Loft Bodyは、2つのSurface形状を定義する対応Vertex間の最短経路に沿って押し出されます。guide curveを使用する場合は、そのguide curveに沿ってLoft Bodyが押し出されます。作成されるBodyはSolidです。Loft Bodyの作成に使用したSurface自体は変更されません。

Create {Body|Volume} Loft Surface <ids> [guide curve <id_list> [global_guides]] [Takeoff_factors <one value per surface in order>=.001] [Takeoff_vector Surface <id> {direction options}] [match vertex <ids>] [closed] [preview] [show_matching_curves]

注:Source SurfaceのIDはloft順に指定する必要があります。

方向指定については 位置・方向・軸の指定(Location, Direction, and Axis Specification) を参照してください。

loftでは次のオプションを使用できます:

  • Guide curve: loftをガイドするCurveを複数指定できます。各Curveは、それぞれのSource SurfaceのCurveに接している必要があります。global_guidesオプションを指定すると、guide curveが全体に対して適用されます。
  • Takeoff_factors: Takeoff factorは、loftがtakeoff vectorにどの程度強く追従するかを制御します。takeoff factorを指定する場合は、各Source Surfaceに対して1つずつ値を指定する必要があります。
  • Takeoff_vector: Takeoff vectorは、各Surfaceに対するloftの接線方向または進行方向を制御します。各Surfaceの既定takeoff vectorはSurface重心位置の法線です。手動で指定する場合は、各Surfaceに対して1つずつtakeoff vectorを指定する必要があります。
  • Match vertex: このオプションは、Source SurfaceのVertex同士をどのように対応付けるかをloftに指示します。match vertexの組は複数指定できます。match vertexを指定する場合は、各Source SurfaceからVertex IDを1つずつ指定し、loft順に並べる必要があります。
  • Closed: このオプションはtoroidal Solidの作成を試みます。最後のSource Surfaceから最初のSource Surfaceへloftします。
  • Preview: このオプションは最終Solidのlinking curveをプレビューします。
  • Show_matching_curves: このオプションはSource SurfaceのVertexがどのように対応付けられるかをプレビューします。

Loftは、より構造化されたMeshを作成するためにBodyを分割する用途にも使用できます。図2は、大きなpaved Surfaceから1つのVolumeをsweepした例です。図3は、同じVolumeについて、source/target Surface上に定義したSurfaceを使ってLoft Bodyを作成した後の状態です。元のBodyはLoft Bodyでchopし、生成された2つのBodyをmergeしています。黄色のVolumeは図2と同様にsweepし、紫色のVolumeはsubmapしています。その結果、全体としてより構造化されたMeshになります。

図2. Loft前のMesh。大きなpaved Faceを持つ単一sweep Volume。

図3. Loft後のMesh。黄色のVolumeはpave、紫色のVolumeはsubmap。

11. Surfaceを厚肉化: Surface Bodyを厚肉化してVolume Bodyを作成できます。bothキーワードを使用すると両方向に厚肉化できます。正のdepthを指定するとSurface normal方向へ、負のdepthを指定すると反対方向へ厚肉化します。複数Surfaceを厚肉化する場合は、すべてのSurface normalの向きが一致している必要があります。

Thicken [Volume|BODY] <id> Depth <depth> [Both]

12. SurfaceをPlaneまでSweep: SurfaceをPlaneの法線方向に、スイープしたSurfaceがPlaneに到達するまでPlane側へスイープします。Planeの指定方法については plane オプションの説明を参照してください。

Sweep surface <id>  target plane <options>

13. SurfaceをDirectionに沿ってSweep:Surfaceを指定Directionに沿ってsweepし、Volumeを作成します。Directionの指定方法については direction オプションの説明を参照してください。

Sweep Surface <surface_id_range> Direction (options)      [switchside] [draft_angle <degrees>] [draft_type <integer>] [rigid]  [anchor_entity] [include_mesh] [keep] [merge]

 

Surface extruded along -X direction without 'include_mesh' option

14. SurfaceをHelixに沿ってSweep:SurfaceをHelixに沿ってsweepします。Helixは軸、 thread_distance (軸方向の回転間距離)、およびねじの向き(right_handed または left_handed.

Sweep {Surface|Curve} <id_range> Helix    {axis <xpoint ypoint zpoint xvector yvector zvector>  | xaxis | yaxis | zaxis} thread_distance <val> angle <val>    [RIGHT_HANDED|left_handed] [anchor_entity] [include_mesh] [keep] [merge]

*** 同じBodyに属する複数のSurfaceを指定すると無効なBodyが作成される場合があるため、推奨しません。 ***

axis = sweepを作成する回転軸

thread_distance = Helixの各360度区間の軸方向距離

angle = Helixの回転角度(degree)

handedness = right-handedまたはleft-handedのねじ

Helical Sweep(らせんSweep)