一斗缶でそそぐ。きれいに移し替えるには

一斗缶油、溶剤など小さな入れ物に移し替える。そそぐ、注ぐ。こんなことありませんか。左は、空気が入ってボッコンボッコンと飛び散る。元そんな時、ロートじゃありません。ロートでも、ボッコンボッコンとなるのは防げない。ロートは、 … “一斗缶でそそぐ。きれいに移し替えるには” の続きを読む

一斗缶
油、溶剤など小さな入れ物に移し替える。そそぐ、注ぐ。
こんなことありませんか。左は、空気が入ってボッコンボッコンと飛び散る。
BfC4bgvCEAAQcIl

そんな時、ロートじゃありません。
ロート
ロートでも、ボッコンボッコンとなるのは防げない。
ロートは、口が小さい時に使うもの。
ロートを使ってもこの考えは必要。
「だれやすい」のと空気が入ってきてボッコンボッコンで飛び散る。
CJy-nEWVEAAiD4w


だから
草刈り機の給油も
新品時は
缶で補給、新品時
減ってきたら
(新品で一杯入ってる時からこうする人が多いわ。空気がボッコンして飛び散るよね。)
缶で補給
最近、塗装せんから一斗缶って使わなくなったな。
写真は草刈り機に混合油を入れる。

ジュール熱 溶接の電流は時間より強烈

Q=RI^2t\,
Qは熱エネルギー
Rは抵抗
Iは電流。2乗!!!
tは時間
熱エネルギーは、抵抗や時間には比例する。電流は2倍以上、2乗に比例する。
ジュール熱は溶接にも当てはまる。
ジュール熱=溶ける量
抵抗=アーク
電流=設定電流
時間=溶接スピード
溶接の溶ける量に影響するのは
電流の2乗に比例する
溶ける量=電流の2乗は以下の式。
y=x^{2}
yが溶ける量。
xが電流。

x 0 1 2 3 4 5 6 7 8 9 10
y 0 1 4 9 16 25 36 49 64 81 100

電流を少し上げると、溶ける量はもっと上がる。
という感じ。
その感じをグラフにする。
グラフ
横が電流
縦が溶ける量
60Aを120Aにする。
2倍だが
溶ける勢いは、4倍。

settimer() killtimer() WindowsAPIである時間にWindowsがVBAの関数(TimerProc)を呼び出す

ExcelのVBAでもWordのVBAでもできます。

以下を標準モジュールに書く。

Option Explicit

#If VBA7 And Win64 Then
'64bit版
   Private Declare PtrSafe Function SetTimer Lib "user32" _
   (ByVal hwnd As LongPtr, ByVal nIDEvent As LongPtr, ByVal uElapse As LongPtr, ByVal lpTimerFunc As LongPtr) As LongPtr
#Else
 '32bit版
  Private Declare Function SetTimer Lib "user32" _
  (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
#End If
#If VBA7 And Win64 Then
 '64bit版
  Private Declare PtrSafe Function KillTimer Lib "user32" (ByVal hwnd As LongPtr, ByVal nIDEvent As LongPtr) As Long
#Else
 '32bit版
  Private Declare Function KillTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long
#End If

'Windowsが呼び出す関数。引数や戻り値は決まっている。TimerProcで検索すると見つかる
Public Sub TimerProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal TimerID As Long, ByVal TickCount As Long)
  Debug.Print hwnd, Msg, TimerID, TickCount
  KillTimer 0, TimerID 'タイマーを止める。Windowsに教える。
'ここにやりたことを書く
End Sub

Sub main()
  SetTimer 0, 0, 1000 * 2, AddressOf TimerProc '1000で1秒。2秒後にTimeProcを呼び出す
End Sub

二秒後にイミディエイトウィンドウに出力する。イミディエイトは下の方の図の下の方。

もし、二秒にしたいならTimeProc関数のKillTimerの行をコメントアウトか削除する。

1列目はウィンドウハンドル、2列目は275はWM_TIMER = &H113 のこと。3列目は、タイマーID。4列目はWindowsの起動からの経過時間(ミリ秒単位)

これやって何がうれしいのかというと、一定時間後に実行する関数が作れる。
呼び出しを実行するのはWindowsのOS。だからVBAのリソースは使わない。Excelのプロセスとは違う。WordとExcelが動いていて、Wordが固まってもExcelまで影響を受けないのと同じ。ただし、WordとExcel間で通信?していると少し違うが、基本的にWordを閉じたらExcelは普通に使える。これはWindowsOSとExcel間でも同じです。ただ、WordとExcelは同等のアプリですが、WindowsとExcelはWindows管理下にある。このイメージ、メモリ空間かな。常にWindowsは動いている。「windows メモり 空間  64」で検索するといろいろ図が見えるが、仮想のメモリ状態、物理的/実際のメモりアドレスはありません。仮想のメモリ上は常にOS(Windows)が常駐してアプリが切り替わる。

で、

一定時間後に実行する関数は、TimerProc関数。
TimerProcの関数名はaaa関数でも何でもいいが、戻り値や引数の数、型は決まっている。

だって、

Windowsが呼び出すのでその決まり引数の数や型、順番も、あとは戻り値の型に従う。WindowsがExcelのプロセスの関数を呼び出す。
TimerProcの関数名をSettimerの第四引数に指定。
関数名を渡すのではなく、関数があるアドレスを渡すためAddressOf演算子を使う(メモリ上のアドレス/番地を渡すので関数名は関係ない。だからaaa関数でもいい)。

ExcelWordのApplication.OnTimeと同等のことができる。こっちは時間の間隔では無く実行する時間を指定する。5秒後にするには「今の時間+5分」。VBAのコードならNow() + TimeValue(“0:0:5”)。

SolidWorksも35分で強制保存終了

SolidWorksだけでsettimer(WindowsAPIの関数)のようにある時間後に関数を呼び出すような方法がわからない。だから、ExcelのApplication.OnTimeを使う。そのため、SolidWor … “SolidWorksも35分で強制保存終了” の続きを読む

SolidWorksだけでsettimer(WindowsAPIの関数)のように
ある時間後に関数を呼び出すような方法がわからない。
だから、
ExcelのApplication.OnTimeを使う。
そのため、
SolidWorksの起動は、Excelファイルから起動する。
(SolidWorks側でExcelのライブラリを参照しても
Application.OnTimeで指定したプロシージャを呼び出せない。
“savequit”を呼び出せないだけでExcelとなる)
2017-07-31_13h52_59
ExcelからSolidWorksを起動するためには、
SolidWorksのライブラリを参照するのがスマート。
SolidWorks関係を追加する。
2017-07-31_13h41_44

以下はModule1のコード
Option Explicit
‘Drawが呼び込まれている場合は元のPartも表示する
Dim swApp As SldWorks.SldWorks
Dim model As SldWorks.ModelDoc2

Sub ボタン1_Click()
    Set swApp = GetObject(“”, “SldWorks.Application”)
    swApp.Visible = True
    Application.OnTime Now() + TimeValue(“0:0:25”), “savequit” ’ここでは25秒にしている
End Sub

Sub savequit()
    Set model = swApp.GetFirstDocument
    Do While Not model Is Nothing
        Debug.Print model.GetTitle
        model.Save
        Set model = model.GetNext
    Loop
    swApp.CloseAllDocuments True ‘Trueで強制終了
    swApp.ExitApp
End Sub

2017-07-31_13h55_03
以上で
ExcelWord、SolidWorksの一定時間後に自動保存強制終了。

集中は35分間  Wordの強制保存終了

文書WordやExcelでの計画、仕様書などを書く時はマクロで強制保存終了させる。一旦、やめる。この開放感を得るための区切り。その内容から一旦離れても脳は考えてる。きっと。以下は、Wordの強制保存終了の設定。Wordも … “集中は35分間  Wordの強制保存終了” の続きを読む

文書WordやExcelでの計画、仕様書などを書く時はマクロで強制保存終了させる。
一旦、やめる。
この開放感を得るための区切り。
その内容から一旦離れても脳は考えてる。きっと。
以下は、Wordの強制保存終了の設定。
Wordもファイルを呼び込んだ時点で以下のを実行する。

ThisDocumentを選んでDocumentのOpenインベントプロシージャを開いて以下を書く。
    Application.OnTime Now() + TimeValue(“0:35:15”), “savequit”

2017-07-23_10h52_38

標準モジュールは以下。

Option Explicit

Sub savequit()
    Application.DisplayAlerts = wdAlertsNone’保存しますか?を表示させない
    ActiveDocument.Save ‘保存
    Application.Quit ‘終了

End Sub
ファイルの保存は、マクロ有効な文書。拡張子が.docmで保存する。

マクロを実行させる。これはここの文書ファイルではなくWordの設定になる。
2017-07-23_10h32_56

ApplicationのOnTimeメソッドは、マクロをそのタイミングで実行させる。
よって、マクロを終了ボタンでマクロは止まらない。というかマクロは動いていない。終わっている。
“savequit”関数の呼び出しを止めるにはブレイクポイントでも設定するしかない。
(一定時間後にsavequit関数を呼び出すのはWindowsというOSの仕事です)
もし、
Now() + TimeValue(“0:0:5”)
などと入れてしまったら、再度ファイルを呼び込んですぐに終了する。
そんな時は、
Shiftボタンを押す、Shiftボタンは文書ファイルが完全に開くまで押すと、マクロは実行されない。

Excelで一定の時間後に上書き強制終了 自動終了

皆で使うExcelファイルは、「校閲」の「ブックの共有」という手もあるが
サーバが遅すぎで、誰も開けないことに。
特にクラウドで共有ってどうなんでようか?

Application.OnTime 実行時間,”モジュールのプロシージャ名”
WorkbookがOpenしたタイミングでこれをセット。
ThisWorkbookを選んで、WorkbookのOpenを選ぶとイベントプロシージャが現れる

Private Sub Workbook_Open()
    Application.OnTime Now() + TimeValue(“0:0:15”), “savequit”
End Sub

2017-07-14_10h26_09


この手法を使うことに。
実際は15分で強制保存終了

ここでは15分後に以下のプロシージャを実行する。
これは、Module1のコード

Sub savedown()
    ThisWorkbook.Activate
    Application.DisplayAlerts = False
    ThisWorkbook.Save
    Range("a1").Copy
    ThisWorkbook.Close
    Application.DisplayAlerts = True
End Sub

ファイルの保存は、マクロ有効ブック。拡張子が.xlsmで保存する。

3D単独図

三次元CAD単独図最後まで単独です。3次元CADの3次元の図しか使わない!これはせっかく作った3次元図を加工工程やお客さんとの間でも使う。わざわざ2次元の図を作らないということ。設計で3次元CADがいいのはわかっている。 … “3D単独図” の続きを読む

三次元CAD単独図
最後まで単独です。
3次元CADの3次元の図しか使わない!
これはせっかく作った3次元図を加工工程やお客さんとの間でも使う。
わざわざ2次元の図を作らないということ。
設計で3次元CADがいいのはわかっている。
構成や動き、機能の確認は三次元CADがいい。

加工工程は
切り込んでいく加工(切削加工か)だけならそうでしょう。
最近は、
3次元プリンター(こっちは盛るかんじかな)にも
だんだんCAD=製作。CAMがすごくなってるんで。
切削する加工工程でのすり合わせが少なくなってきている。
一方、
組み合わせて大きくしていく鉄工業や機械板金では加工工程中にいろいろあるわな。
板金設計ってなことばがある。
FAXやPDF、CADデータ、ポンチ絵、メモなどからAP100とか使って加工のための図を描く。
図とは展開図のこと。
CADデータもらってたら自動でアマダさんなどのAP100へとなればいいが。
さて、
3次元CADはもう大学でも一般的になっている。
だから
3次元図面で仕事が進むかというと
(コンピュータ画面でも2次元だが3次元のように見せる)
コンピュータの3次元のまま印刷して使えばええのにって。
単純な形状なら3次元に寸法が書ける。これで十分かと。
現実は2次元の図面を使っている。
流用できるような図があるなら、
2次元CADの方が早いに決まっている。
人は慣れている方を使うとか色々あるんでしょうね。
3次元CADをそのまま使えると、2次元CADが無くなる?かも。
JISで決まった形式があるって強いわ。
3次元CADの印刷規格?
とりあえず国内だけでも先に?
三次元CAD情報標準化専門委員会」のご活躍を期待ております。
日本自動車工業会
私は、待ち姿勢。

SollidWorksにMBDというのがある。
図面レスを狙っている
タブレットを工場に入れれば
今の人は携帯で操作慣れてるし。