と出てことごとく「解析実行」できない状態に。過去解析できてたはずの部品もそのエラー。
「SolidWorks 無題 共有 違反 CAE」で検索したけど。
一時的に使うフォルダを知りたかったがわからなかった。tempで検索すると見つかった。
C:\Users\ログインユーザー名\AppData\Local\Temp
を片っ端から削除したら回復した。このフォルダやファイルは隠しファイルなので見えるようにしてからTempのフォルダやファイルをドラッグしてDelボタン。
ソリッドワークス/SolidWorks、AP100、プログラム、TIG,CO2,手棒、板金
と出てことごとく「解析実行」できない状態に。過去解析できてたはずの部品もそのエラー。
「SolidWorks 無題 共有 違反 CAE」で検索したけど。
一時的に使うフォルダを知りたかったがわからなかった。tempで検索すると見つかった。
C:\Users\ログインユーザー名\AppData\Local\Temp
を片っ端から削除したら回復した。このフォルダやファイルは隠しファイルなので見えるようにしてからTempのフォルダやファイルをドラッグしてDelボタン。
大きな違いは「投影対象」。対象がスケッチとエンティティ/要素の違いです。参照スケッチはスケッチ単位で強固な関連付けです。エンティティ変換は線、点(エンティティ/要素)単位の拘束です。拘束は削除できます。
参照スケッチは、エンティティ変換/要素変換でも可能というか、基本、エンティティ変換を使うのが普通でしょう。平行の場合だけ。形状からスケッチが欲しい時に使うのがほとんどです。次の動画みたいなことしませんよね。
で、参照スケッチがいいのは、
あらぬ方向、位置へのスケッチをしたい場合はスケッチ全体をコピーし関連付ける。
だから、寸法の共有とか標準化という考えで作るものです。標準化?した参照スケッチから複数のフィーチャーを作るとか。
フィーチャーがある時は、参照ジオメトリに「重心」と「合致参照」が増えます。背の高い製品を設計する時は重心を表示します。
フィーチャーが無いと「使えない」色になっているなら「重心」の存在を意識できるが、「平面」から「点」」までしか存在しません。Solidworksさん「重心」使えない色にして常に表示してください。
重心の位置をスケッチで使う場合、「重心参照点」をフィーチャーツリーに追加します。「重心参照点」はフィーチャーですからこれを使ってスケッチする場合は参照ジオメトリの平面を作ります。スケッチで「重心参照点」と直線の端を一致させることができます。つまり、拘束も使える。
赤い矢印が「重心参照点」フィーチャーです。
話は変わって、重心位置に点を表示するマクロです。参照ジオメトリの原点があれば十分でしょう。CharGPTならすぐできるだろうとやってみたが、部品表はすぐできたが、調子に乗っていろいろ要求したので結構時間がかかった。部品表のマクロの時は、Solidworksマクロってマイナーすぎてどうせできないだろって思って、コマメにコードを書いてもらってからまとめるという方法だったかあな。質問は10回程度だった。いい時代です。プログラムってちょっとしたことを確認するだけで時間がかかるし、コードを書く時間も。書く手間が省けるだけですごいが、コピペで使える。
平面に平行な参照ジオメトリの平面を作って、そこに点をスケッチする。評価の質量特性で重心が一時的に表示されるので正しくスケッチされているか確認して下さい。
Option Explicit
Dim swApp As Object
Dim Part As Object
Dim MassProp As MassProperty
Dim MassCenter(2) As Double
Dim RefPlaneFeature As Object
Dim SketchMgr As Object
Dim SketchPoint As Object
Sub main()
' SolidWorksアプリケーションへの接続
Set swApp = Application.SldWorks
Set Part = swApp.ActiveDoc
If Part Is Nothing Then
MsgBox "モデルが開いていません"
Exit Sub
End If
' 質量プロパティオブジェクトを取得
Set MassProp = Part.Extension.CreateMassProperty
If MassProp Is Nothing Then
MsgBox "質量プロパティを取得できませんでした。"
Exit Sub
End If
' 重心の位置を取得
MassCenter(0) = MassProp.CenterOfMass(0) ' X座標
MassCenter(1) = MassProp.CenterOfMass(1) ' Y座標
MassCenter(2) = MassProp.CenterOfMass(2) ' Z座標
'正面を選択
Dim boolstatus As Boolean
boolstatus = Part.Extension.SelectByID2("正面", "PLANE", 0, 0, 0, True, 0, Nothing, 0)
' 平面を挿入
Set RefPlaneFeature = Part.FeatureManager.InsertRefPlane(swRefPlaneReferenceConstraint_Distance, MassCenter(2), 0, 0, 0, 0)
If RefPlaneFeature Is Nothing Then
MsgBox "参照平面の作成に失敗しました。"
Exit Sub
End If
' スケッチマネージャーを取得
Set SketchMgr = Part.SketchManager
' 作成した参照平面を選択
RefPlaneFeature.Select False
' 新しいスケッチを開始
SketchMgr.InsertSketch True
' 重心の位置に点を作成
Set SketchPoint = SketchMgr.CreatePoint(MassCenter(0), MassCenter(1), MassCenter(2))
' スケッチを閉じる
SketchMgr.InsertSketch True
MsgBox "重心の位置を通過する参照ジオメトリ平面上に点がスケッチされました。"
End Sub
これは、開いている図面で実行すると部品表/BOM(Bill Of Materials)をExcelファイルで保存します。Excelのファイル名は図面のファイル名と同じです。図面ファイルと同じフォルダに保存します。Excelのマクロも使ってます。
部品表のExcelファイルを移動して発注などに使っても図面の関係がわかるようにA1セルに図面ファイルのフルパスのファイル名を入れています。
完了したら、Solidworksでは完了のメッセージを開き、Windowsエクスプローラーで保存したExcelのファイルがあるフォルダを開きます。
Sub drdBOM_xls()
' SolidWorksアプリケーションのインスタンスを取得
Dim swApp As SldWorks.SldWorks
Set swApp = Application.SldWorks
' アクティブなドキュメントを取得
Dim swModel As SldWorks.ModelDoc2
Set swModel = swApp.ActiveDoc
If swModel Is Nothing Then
MsgBox "アクティブなドキュメントが見つかりません。"
Exit Sub
End If
' 部品表を保持する変数
Dim swTable As SldWorks.TableAnnotation
Dim foundBOM As Boolean
foundBOM = False
' 図面シートまたはビューを取得し、すべてのビューを巡回
Dim swView As SldWorks.View
Set swView = swModel.GetFirstView
Do While Not swView Is Nothing
' 各ビュー内のテーブル注釈を取得
Dim swTableAnn As SldWorks.TableAnnotation
Set swTableAnn = swView.GetFirstTableAnnotation
' テーブルアノテーションを巡回
Do While Not swTableAnn Is Nothing
' 部品表かどうか確認
If swTableAnn.Type = swTableAnnotationType_e.swTableAnnotation_BillOfMaterials Then
Set swTable = swTableAnn
foundBOM = True
Exit Do
End If
Set swTableAnn = swTableAnn.GetNext
Loop
If foundBOM Then Exit Do
Set swView = swView.GetNextView
Loop
' 部品表が見つからなかった場合
If Not foundBOM Then
MsgBox "部品表が見つかりませんでした。"
Exit Sub
End If
' Excelアプリケーションのインスタンスを作成
Dim xlApp As Object
Dim xlBook As Object
Dim xlSheet As Object
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Add
Set xlSheet = xlBook.Sheets(1)
' Excelを表示
xlApp.Visible = True
' 正規表現オブジェクトを作成してHTMLタグを削除する
Dim regex As Object
Set regex = CreateObject("VBScript.RegExp")
regex.Global = True
regex.IgnoreCase = True
regex.Pattern = "<[^>]+>" ' HTMLタグにマッチするパターン
' 部品表の行数と列数を取得
Dim rowCount As Long
Dim colCount As Long
rowCount = swTable.rowCount
colCount = swTable.ColumnCount
' 部品表データをExcelに転送
Dim i As Long, j As Long
Dim rawText As String
Dim cleanText As String
For i = 0 To rowCount - 1
For j = 0 To colCount - 1
rawText = swTable.DisplayedText(i, j)
'0001先頭が0から始まる文字を数値にしないために’を入れてセルで文字列にする
If Left(rawText, 1) = "0" Or Left(rawText, 1) = "0" Then rawText = "'" & rawText
' HTMLタグを削除
cleanText = regex.Replace(rawText, "")
xlSheet.Cells(i + 1, j + 1).Value = cleanText
Next j
Next i
'A1に図面のフォルダ名+ファイル名をコメントで追加
xlSheet.Range("A1").AddComment swModel.GetPathName
'Excelで保存するために図面のフルパス+ファイル名の拡張子だけを削除
Dim ss As String
ss = Mid(swModel.GetPathName, InStrRev(swModel.GetPathName, "."))
ss = VBA.Replace(swModel.GetPathName, ss, "")
' Excelファイルの保存
' 警告を無効にする
xlApp.Application.DisplayAlerts = False
xlBook.SaveAs ss 'Excelファイルの保存
'xlBook.SaveAs ss & ".csv" 'CSVファイルの保存。テキストです
' 警告を無効にする
xlApp.Application.DisplayAlerts = True
xlApp.Quit 'Excel終了
' クリーンアップ
Set xlSheet = Nothing
Set xlBook = Nothing
Set xlApp = Nothing
MsgBox "部品表がExcelにエクスポートされました。"
' エクスプローラーでExcelで保存したフォルダを開く
ss = Mid(swModel.GetPathName, InStrRev(swModel.GetPathName, "\"))
ss = VBA.Replace(swModel.GetPathName, ss, "")
Shell "explorer.exe " & ss, VBA.vbNormalFocus
End Sub
とりあえずの状態ですが、いずれあるフォルダ以下にある全図面ファイルの部品表を自動的にExcelファイル保存するマクロ/コードを書きたいと思います。やっぱ自動化ですよね。DX(デジタルトランスフォーメーション)っていうやつです。
ソリッドワークス/SolidWorksでテンプレートを保存する時に何でdotなん????って思ってました。prt,asm,drwはいいのですが続くdot。
WordでもNormal.dotとかマクロ付きはNormal.dotmというテンプレートファイルがあるようです。これでピント!きた。予想ですが、
DOcument Templatesの略ではないかと?
SolidWorksの部品のテンプレート保存。Part Template
SolidWorksのアセンブリのテンプレート保存。Assembly Templates
SolidWorksの図面のテンプレート保存。これだけ日本語ね。図面テンプレート
ところで、
テンプレートは、ドキュメントプロパティとファイルプロパティのどちらも保存できる。特に、ファイルプロパティには重量と材料は追加しておきましょう。部品表を作る時に便利ですから。
下図の信号機の右がファイルプロパティ、その右がシステムプロパティとドキュメントプロパティ。
テンプレートとは日本語で型という意味です。テンプレートは、コンピュータの世界では実体はファイルでしょう。ファイルとしていろいろなことを設定できます。
まず、システムオプションです。これはテンプレートではありませんが、Solidworksの設定です。
さらに
テンプレートとといえばドキュメントテンプレートと部品表、図面シートでしょう。ドキュメントテンプレートは、部品、アセンブリ、図面の3種類があります。
「システムオプション」の「ファイル検索」には下図のように多くのテンプレートというファイルがあります。
この中にはフォルダが設定されてない空白なものもあります。例えば、「参照ドキュメン」です。使わないから空白なのです。
Solidworksでメッシュがあるから「これが要素ね」って何気なく考えてた。人に聞くって「今更何を聞く」って顔されそうで、ChatGTPがあるな~って興味本位で。
検索でも調べられるが正しくかどうか分からなくても語りかけてくれる感じが良かった。
この書式が私の書き込みです。
上の書式以外はChatGTPの返答です。
材料力学と有限要素法の関係ですが、有限要素法の簡易版が材料力学という考えは正しい?
ChatGPT
「材料力学」と「有限要素法(FEM)」の関係を「有限要素法の簡易版が材料力学」と捉えるのは、厳密には正確ではありませんが、ある意味では近い概念です。
材料力学は、力や変形に対する材料の応答を解析する学問です。一般的に、単純な構造部材(ビーム、柱、プレートなど)の力学挙動を解析し、応力、ひずみ、変形を計算するための理論や公式が確立されています。材料力学は、特定の構造や条件に対して比較的単純な手法を使って解析が行われます。
有限要素法は、複雑な形状や荷重条件の構造物を解析するために開発された数値解析手法です。FEMでは、構造物を細かい要素に分割し、それぞれの要素の応力や変形を計算することで、全体の挙動を解析します。材料力学の理論をベースにしている部分もありますが、FEMはより複雑な問題を解くための汎用的な手法です。
「材料力学は有限要素法の簡易版」という表現は、材料力学が扱う特定のシンプルな問題において成り立つこともありますが、材料力学はそれ自体独立した学問であり、有限要素法の一部や簡易版とは異なります。両者は相補的な関係にありますが、アプローチのスコープや手法には違いがあります。
4o
CAEではメッシュを作って計算させますがこれが有限要素ということですか
ChatGPT
はい、その通りです。CAE(Computer-Aided Engineering)でのメッシュ生成は、まさに「有限要素法(FEM)」の要素を作るプロセスであり、これが「有限要素」に相当します。
有限要素法では、複雑な形状や構造物を解析するために、解析対象を「有限要素」という小さな単位に分割します。これを「メッシュを作る」と呼びます。
CAEでのメッシュ生成は、FEMにおける「有限要素」を構築する過程です。メッシュの要素に分けることで、コンピュータが複雑な問題を小さな要素ごとに処理し、全体の挙動を解析できるようにしています。
4o
すみ肉溶接 cae solidworksで検索するとSolidWorksのヘルプが見つかります。
上図のフリーハンドの赤色の円のようにすみ肉溶接は、普通、完全溶け込み(フルペネ画像もあります)とはなりません。溶接部分は付いてるが、2つの板はスキマが空いてます。
溶接をやってる自分からすると同じ板厚でも図の場合は、縦側が溶けにくく、くの字になりやすい。水平の板は溶けやすく、仮付の段階で直角でなくなる。溶接は引っ張る。
完全溶け込みにするなら開先加工、レ型にすればフルペネになるので、一つの塊、ソリッドとして解析すればいい。SimulationXpressで解析できる。SolidWorksを持ってればだれでもできる。リンクの検索の中でこちらによるとSimulationXpressはSolidWorksのStandardでも使える。
完全溶け込みだと、構造解析は簡単かと思います。どんな強度は鋼材の板厚が基本で、溶接部ののど厚だの溶け込みだのはCAEからすると余計な計算です。
SolidWorksでモデルと作る時は、完全溶込み溶接なら2つの板をのモデルを作る時に「結果にマージ」して、すみ肉溶接部分はフィレットでこれも「結果にマージ」すると一体物になって接触の設定はいらない。
T形のすみ肉溶接はボンドなど接触の設定がいる。接触セットや部材接触など何って感じです。
SimulationXpress接触の設定ができない。力、圧力の設定時にアラートが出て進めなくなる。下図は、SimulationXpressの途中で「メッセージ」が出て止まっている状態。
四角の赤枠のメッセージには、以下が書いてある。
SOLIDWORKS SimulationXpressは解析中の部品にマルチボディを検知しました。現在、ソフトウェアは、任意の単一ボディをサポートします。解析するボディを選択して下さい。選択されたボディ以外の全てのボディは非表示になります。
どれか1体のボディを選択すればSimulationXpressは解析を進めることができる。