設計テーブル グローバル変数、角エルボで

最後の方でExcelを削除して、コンフィグレーションが残るのを確認しているが、コンフィグレーション作成が一挙にできるので便利です。

それにしても、グローバル変数をExcelの項目名に使うのが珍しい。普通に寸法名を使うのが簡単です。

そもそも、グローバル変数って名前はどうなんでしょう。単に変数じゃだめなんかな。グローバルが付く。テキストファイルやExcelでいろいろ変更できるが、別にグローバル変数はいらない。

相関線 その2

以前にも書いたが動画で肝心の展開が飛んでいた。

今回はきっちりと展開図があります。コンフィグレーションを使って展開図ができる状態、2つの管が組んでる状態がある。

展開可能にするには「シェル化」は使わない。ここでも展開するので「押し出しカット」を使って穴を空ける。

球やアールを展開図にする

アールはともかく球は展開図にできない。サッカーボールは球だが、複数の六角形の展開図でボールっぽく作ることができる。だから、細かくすれば球に見える。

ソリッドワークス/SolidWorksの板金のタブの「とめつぎフランジ」は、スケッチで直線を書くとフランジを作ってくれる。いろいろな角度があり、複雑な形状を描く場合は便利です。次図は、直線をアールっぽく、底を12多角形で円っぽく。

球の1/8やアールが多いと加工がしにくい。溶接するとなると直線的で短い方がひずみ、研磨が少なくていい。

参考にこっちも。

展開は最後の最後にしてます。

正三角錐 板金展開図

  1. 板金に変換
  2. とめつぎフランジ
  3. エッジフランジ

上記は板金のタブにあるコマンドです。正三角錐を上記のコマンドで作成します。

その前に経過説明。

ソリッドワークス/Solidworksを使い始めて、同僚から「三角錐」って作るの難しいよ」と言われる。

確かに、「押し出しボス」を多用するのでななかなか斜めに描くことは慣れていなし。それに、斜面がある図面って3Dではなく三面図なんかでは読図が難しい。

以前にこんなのアップしている。

高評価もいただいている。m(_ _)m。

時は随分と経って、技能もアップしたので以下の展開図可能な正三角錐を作った。順に、

  1. 板金に変換
  2. とめつぎフランジ
  3. エッジフランジ

角エルボ(出入り口のサイズ違い)

入り口と出口のサイズが違い、ねじりや曲げにくい板厚3.2以上を前提に展開図を描く。

ロフトで作ると絞りや打ち出し加工が必要になる。ロフトの作成例

まず、球は展開できない。円筒や面は展開図を作ることができる。面は三角形で考える。

ソリッドワークス/Solidworksのサーフェスを使って展開できない状況を判断する。ロフトを使って3Dモデルを作った。

ロフトで絞り、打ち出しが必要なことを確認。展開サーフェス、変形プロットで確認する。

展開サーフェースを作る時にメッシュ/ワイヤーフレームが見える。サーフェースってワイヤーフレームなんです。CADの表現方法、モデルとして以下の3つある。

  1. ワイヤーフレーム
  2. サーフェース
  3. ソリッド

ソリッドワークス/SolidWorksのサーフェースはワイヤーフレームでもある。

で、

ワイヤーフレームと言えば三角形、展開図ができる最小の面でもある。三角形ができれば2つの直角三角形が作れるので展開図の手法の三角形法が使える。ん。つなげすぎか。

さて、元に話に戻って。

角エルボを作る基本部分の作成方法

展開可能な角エルボの例。出口側は直線の面。

Rの部分は順次変化するように変更。

角ダクトの骨格

以下はマクロ記録を一部修正したます。動画の下に置きたかったが5000文字までという制約で置けませんでした。

Option Explicit

Dim swApp As SldWorks.SldWorks

Dim Part As SldWorks.PartDoc
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long

Sub main()


Set swApp = Application.SldWorks

Set Part = swApp.ActiveDoc
Dim myModelView As Object
Set myModelView = Part.ActiveView
myModelView.FrameState = swWindowState_e.swWindowMaximized

Dim skSegment As Object
Set skSegment = Part.SketchManager.Create3PointArc(0.025, 0.084, 0#, 0.118798, 0.029, 0#, 0.088, 0.073, 0#)
Part.ClearSelection2 True
Set skSegment = Part.SketchManager.CreateCenterLine(0.025, 0.084, 0#, 0.109064, 0.084, 0#)
Part.SetPickMode
Part.ClearSelection2 True
boolstatus = Part.Extension.SketchBoxSelect("0.079", "0.058", "0.000", "0.090", "0.095", "0.000")
boolstatus = Part.Extension.SelectByID2("Arc1", "SKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Line1", "SKETCHSEGMENT", 0, 0, 0, True, 0, Nothing, 0)
Part.SketchAddConstraints "sgTANGENT"
Part.ClearSelection2 True
Part.SketchManager.InsertSketch True
boolstatus = Part.Extension.SelectByID2("平面", "PLANE", 0, 0, 0, False, 0, Nothing, 0)
Part.SketchManager.InsertSketch True

Part.ShowNamedView2 "*等角投影", 7

Part.ClearSelection2 True
boolstatus = Part.Extension.SetUserPreferenceToggle(swUserPreferenceToggle_e.swSketchAddConstToRectEntity, swUserPreferenceOption_e.swDetailingNoOptionSpecified, False)
boolstatus = Part.Extension.SetUserPreferenceToggle(swUserPreferenceToggle_e.swSketchAddConstLineDiagonalType, swUserPreferenceOption_e.swDetailingNoOptionSpecified, True)
Dim vSkLines As Variant
vSkLines = Part.SketchManager.CreateCornerRectangle(0.061, 0.046, 0, 0.11, -0.05, 0)
Part.ClearSelection2 True
Part.SketchManager.InsertSketch True
boolstatus = Part.Extension.SelectByID2("スケッチ1", "SKETCH", 0, 0, 0, False, 0, Nothing, 0)
Part.ClearSelection2 True
boolstatus = Part.Extension.SelectByID2("スケッチ1", "SKETCH", 0, 0, 0, False, 0, Nothing, 0)
boolstatus = Part.SelectedFeatureProperties(0, 0, 0, 0, 0, 0, 0, 1, 0, "外側R")
boolstatus = Part.Extension.SelectByID2("スケッチ2", "SKETCH", 0, 0, 0, False, 0, Nothing, 0)
Part.ClearSelection2 True
boolstatus = Part.Extension.SelectByID2("スケッチ2", "SKETCH", 0, 0, 0, False, 0, Nothing, 0)
boolstatus = Part.SelectedFeatureProperties(0, 0, 0, 0, 0, 0, 0, 1, 0, "入り口")
boolstatus = Part.Extension.SelectByID2("右側面", "PLANE", 0, 0, 0, False, 0, Nothing, 0)
Part.SketchManager.InsertSketch True
Part.ClearSelection2 True
boolstatus = Part.Extension.SetUserPreferenceToggle(swUserPreferenceToggle_e.swSketchAddConstToRectEntity, swUserPreferenceOption_e.swDetailingNoOptionSpecified, False)
boolstatus = Part.Extension.SetUserPreferenceToggle(swUserPreferenceToggle_e.swSketchAddConstLineDiagonalType, swUserPreferenceOption_e.swDetailingNoOptionSpecified, True)
vSkLines = Part.SketchManager.CreateCornerRectangle(-0.041, 0.074, 0, 0.041, 0.033, 0)
Part.ClearSelection2 True
Part.SketchManager.InsertSketch True
boolstatus = Part.Extension.SelectByID2("スケッチ3", "SKETCH", 0, 0, 0, False, 0, Nothing, 0)
boolstatus = Part.SelectedFeatureProperties(0, 0, 0, 0, 0, 0, 0, 1, 0, "出口")
boolstatus = Part.Extension.SelectByID2("出口", "SKETCH", 0, 0, 0, False, 0, Nothing, 0)
Part.EditSketch
Part.ClearSelection2 True
boolstatus = Part.Extension.SelectByID2("Line3", "SKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)
Part.SelectMidpoint
boolstatus = Part.Extension.SelectByID2("Point1@原点", "EXTSKETCHPOINT", 0, 0, 0, True, 0, Nothing, 0)
Part.SketchAddConstraints "sgVERTICALPOINTS2D"
Part.ClearSelection2 True
Part.SketchManager.InsertSketch True

' Named View
'Part.ShowNamedView2 "*等角投影", 7
Part.ViewZoomtofit2
boolstatus = Part.Extension.SelectByID2("外側R", "SKETCH", 0, 0, 0, False, 0, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("入り口", "SKETCH", 0, 0, 0, False, 0, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("入り口", "SKETCH", 0, 0, 0, False, 0, Nothing, 0)
Part.EditSketch
Part.ClearSelection2 True
boolstatus = Part.Extension.SelectByID2("Line2", "SKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)
Part.SelectMidpoint
boolstatus = Part.Extension.SelectByID2("Point1@原点", "EXTSKETCHPOINT", 0, 0, 0, True, 0, Nothing, 0)
Part.SketchAddConstraints "sgHORIZONTALPOINTS2D"
Part.ClearSelection2 True
Part.SketchManager.InsertSketch True
boolstatus = Part.Extension.SelectByID2("外側R", "SKETCH", 0, 0, 0, False, 0, Nothing, 0)
Part.EditSketch
Part.ClearSelection2 True
Part.SketchManager.InsertSketch True
boolstatus = Part.Extension.SelectByID2("外側R", "SKETCH", 0, 0, 0, False, 0, Nothing, 0)
boolstatus = Part.ReorderFeature("外側R", "出口")
boolstatus = Part.Extension.SelectByID2("外側R", "SKETCH", 0, 0, 0, False, 0, Nothing, 0)
Part.EditSketch
Part.ClearSelection2 True
boolstatus = Part.Extension.SelectByID2("Point1", "SKETCHPOINT", 0, 0, 0, False, 0, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Line1@出口", "EXTSKETCHSEGMENT", 0, 0, 0, True, 0, Nothing, 0)
Part.SketchAddConstraints "sgATPIERCE"
Part.ClearSelection2 True
boolstatus = Part.Extension.SelectByID2("Point2", "SKETCHPOINT", 0, 0, 0, False, 0, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Line4@入り口", "EXTSKETCHSEGMENT", 0, 0, 0, True, 0, Nothing, 0)
Part.SketchAddConstraints "sgATPIERCE"
Part.ClearSelection2 True
Part.SketchManager.InsertSketch True
boolstatus = Part.Extension.SelectByID2("正面", "PLANE", 0, 0, 0, False, 0, Nothing, 0)
Part.SketchManager.InsertSketch True
Part.ClearSelection2 True
Set skSegment = Part.SketchManager.Create3PointArc(0.018, 0.035, 0#, 0.048, 0.004, 0#, 0.046, 0.031, 0#)
Part.ClearSelection2 True
Set skSegment = Part.SketchManager.CreateCenterLine(0.018, 0.035, 0#, 0.167765, 0.035, 0#)
Part.SetPickMode
Part.ClearSelection2 True
boolstatus = Part.Extension.SketchBoxSelect("0.029", "0.028", "0.000", "0.043", "0.044", "0.000")
boolstatus = Part.Extension.SelectByID2("Arc1", "SKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Line1", "SKETCHSEGMENT", 0, 0, 0, True, 0, Nothing, 0)
Part.SketchAddConstraints "sgTANGENT"
Part.ClearSelection2 True
boolstatus = Part.Extension.SelectByID2("Point1", "SKETCHPOINT", 0, 0, 0, False, 0, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Line3@出口", "EXTSKETCHSEGMENT", 0, 0, 0, True, 0, Nothing, 0)
Part.SketchAddConstraints "sgATPIERCE"
Part.ClearSelection2 True
boolstatus = Part.Extension.SelectByID2("Point2", "SKETCHPOINT", 0, 0, 0, False, 0, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Line2@入り口", "EXTSKETCHSEGMENT", 0, 0, 0, True, 0, Nothing, 0)
Part.SketchAddConstraints "sgATPIERCE"
Part.ClearSelection2 True
Part.SketchManager.InsertSketch True
boolstatus = Part.Extension.SelectByID2("スケッチ4", "SKETCH", 0, 0, 0, False, 0, Nothing, 0)
boolstatus = Part.SelectedFeatureProperties(0, 0, 0, 0, 0, 0, 0, 1, 0, "内側R")
End Sub

フィジカルダイナミックス

玉3つ、板1つのアセンブリ

普通、アセンブリで部品を扱う時、ソリッド同士が交わる、交錯するのが変だが、この状態では物らしい動きになる。玉と玉が衝突したら玉が動く。玉を動かし易いように板にビー玉を「合致」(一致)をさせる。
モデルの状態でやってます。モーションスタディじゃない。
フィジカルダイナミックスのチェック中だけ衝突、物らしく動く。普段からこれできるとスゲーが、描画が遅くなるんだろー。
ファイルはこっち。作るの簡単、ビー玉を一つ、板を1つ作ってアセンブリで合致させるだけ。