CyberChaos(さいばかおす)

プログラミング言語、トランスパイラ、RPA、ChatGPT、データマイニング、リバースエンジニアリングのための忘備録

下膳ロボット

2023-03-21 18:41:42 | 日記


一刻魁堂に一年以上ぶりにラーメンを食いに行ったら下膳ロボットがいて、ちょっとびっくりwww

なんだかズンチャカズンチャカ♪BGMみたいなのが流れてきたので、店内でゲリラライヴでも始まったのかと思ったら、下膳ロボットだった。

写真は和民のやつだが、同じようなタイプだった。

一方、これで一刻魁堂のスタッフの仕事が楽になるかもしれないが、他方、リストラが横行するかもしれない。

ちなみに俺は食い終わった後、下膳ロボットに食器等を載せないで、しれっと会計を済ませて店を出てきた。

果たして運用コストはどれくらいなのだろうか?

CATIAを使って手描きで曲線を描く方法

2023-03-21 15:47:15 | CATIA
「フリーハンド」と「手描き」は似て非なるもの。
フリーハンドを手描きに変えて質問し直してみた。

CATIAを使って手描きで曲線を描く方法と描いた曲線を平滑化する手法は?

CATIAを使って手描きで曲線を描く場合、以下の手順を実行することができます。

Sketcherワークベンチを開きます。
「ツールバー」から「スケッチプレーン」を選択して、必要に応じてプレーンを作成します。
「描画」ツールバーから「自由曲線」アイコンを選択します。
手描きで曲線を描きます。描画が完了したら、「完了」ボタンをクリックして、スケッチを終了します。
必要に応じて、曲線を編集して形状を調整します。
描いた曲線を平滑化する方法として、以下の手法があります。

スプライン曲線を使用して、曲線を滑らかにすることができます。手描きで描いた曲線を選択し、スプライン曲線を作成するためのオプションを選択します。必要に応じてポイントを調整して、曲線を滑らかにします。
曲線を選択し、曲線のプロパティダイアログボックスで、平滑化オプションを選択することもできます。これにより、曲線が滑らかになります。
これらの手法を使用して、手描きでCATIAで描いた曲線を平滑化することができます。

「描画」ツールバーから「自由曲線」アイコンを選択します。
という一文が加筆されたようだ。


CATIAを使ってフリーハンドで曲線を描く方法

2023-03-21 15:44:33 | CATIA
CATIA: フリーハンドと平滑化

CATIAを使ってフリーハンドで曲線を描く方法と描いた曲線を平滑化する手法は?

CATIAを使ってフリーハンドで曲線を描く場合、以下の手順を実行することができます。

Sketchワークベンチを選択します。
スケッチプレーンを作成します。平面や曲面などを選択し、必要に応じてサイズを調整します。
スケッチツールを使用して、曲線を描画します。フリーハンドツール、2点間のラインツール、曲率半径ツールなどがあります。
必要に応じて、描いた曲線を編集し、サイズや形状を調整します。
描いた曲線を平滑化する方法として、以下の手法があります。

Filletコマンドを使用して、曲線の角を丸くすることができます。Filletedgeワークベンチで曲線を選択し、適切な半径を指定します。
スプライン曲線を使用して、曲線を滑らかにすることができます。スプライン曲線を作成し、必要に応じてポイントを調整して、曲線を滑らかにします。
曲線を選択し、曲線のプロパティダイアログボックスで、平滑化オプションを選択することもできます。これにより、曲線が滑らかになります。
これらの手法を使用して、CATIAで描いた曲線を平滑化することができます。

※曲線を制するものはCATIAを制す!

CATIA自動化VBS作成サービス

2023-03-21 14:52:19 | CATIA
 
渡り鳥さん(システムエンジニア)のプロフィール | ココナラ

渡り鳥さん(システムエンジニア)のプロフィール | ココナラ

初めまして、渡り鳥と申します。 普段はCATIA、Excelのマクロ開発をしています。 【CATIA】 CATIAの操作は一通りできますがモデリングはあまり得意ではないです。 ワーク...

ココナラ

P.S.
こいつの記事の以下のサンプルコードを実行してみたらエラーとなって実行できなかった。
 
'Const SIZE_VALUE As Double = 100#
Dim SIZE_VALUE 'As Double
SIZE_VALUE = 100
 
Dim appCATIA 'As INFITF.Application
Set appCATIA = GetObject(, "CATIA.Application")
 
Dim docs 'As INFITF.Documents
Set docs = appCATIA.Documents
 
Dim partDocNew 'As MECMOD.PartDocument
Set partDocNew = docs.Add("Part")
 
Dim partNew 'As MECMOD.Part
Set partNew = partDocNew.Part
 
Dim hbWork 'As MECMOD.HybridBody
Set hbWork = partNew.HybridBodies.Add()
 
Dim hsFactory 'As HybridShapeTypeLib.HybridShapeFactory
Set hsFactory = partNew.HybridShapeFactory
 
Dim dX 'As Double
Dim dY 'As Double
Dim dZ 'As Double
Dim hsPt1 'As HybridShapeTypeLib.HybridShapePointCoord
Dim refPt1 'As INFITF.Reference
dX = (SIZE_VALUE / 2)
dY = (SIZE_VALUE / 2)
dZ = 0
Set hsPt1 = hsFactory.AddNewPointCoord(dX, dY, dZ)
Call hbWork.AppendHybridShape(hsPt1)
Call partNew.UpdateObject(hsPt1)
Set refPt1 = partNew.CreateReferenceFromObject(hsPt1)
Dim hsPt2 'As HybridShapeTypeLib.HybridShapePointCoord
Dim refPt2 'As INFITF.Reference
dX = (SIZE_VALUE / 2) * -1
Set hsPt2 = hsFactory.AddNewPointCoord(dX, dY, dZ)
Call hbWork.AppendHybridShape(hsPt2)
Call partNew.UpdateObject(hsPt2)
Set refPt2 = partNew.CreateReferenceFromObject(hsPt2)
Dim hsPt3 'As HybridShapeTypeLib.HybridShapePointCoord
Dim refPt3 'As INFITF.Reference
dY = (SIZE_VALUE / 2) * -1
Set hsPt3 = hsFactory.AddNewPointCoord(dX, dY, dZ)
Call hbWork.AppendHybridShape(hsPt3)
Call partNew.UpdateObject(hsPt3)
Set refPt3 = partNew.CreateReferenceFromObject(hsPt3)
Dim hsPt4 'As HybridShapeTypeLib.HybridShapePointCoord
Dim refPt4 'As INFITF.Reference
dX = (SIZE_VALUE / 2)
Set hsPt4 = hsFactory.AddNewPointCoord(dX, dY, dZ)
Call hbWork.AppendHybridShape(hsPt4)
Call partNew.UpdateObject(hsPt4)
Set refPt4 = partNew.CreateReferenceFromObject(hsPt4)
 
Dim hsLine1 'As HybridShapeTypeLib.HybridShapeLinePtPt
Dim refLine1 'As INFITF.Reference
Set hsLine1 = hsFactory.AddNewLinePtPt(refPt1, refPt2)
Call hbWork.AppendHybridShape(hsLine1)
Call partNew.UpdateObject(hsLine1)
Set refLine1 = partNew.CreateReferenceFromObject(hsLine1)
Dim hsLine2 'As HybridShapeTypeLib.HybridShapeLinePtPt
Dim refLine2 'As INFITF.Reference
Set hsLine2 = hsFactory.AddNewLinePtPt(refPt2, refPt3)
Call hbWork.AppendHybridShape(hsLine2)
Call partNew.UpdateObject(hsLine2)
Set refLine2 = partNew.CreateReferenceFromObject(hsLine2)
Dim hsLine3 'As HybridShapeTypeLib.HybridShapeLinePtPt
Dim refLine3 'As INFITF.Reference
Set hsLine3 = hsFactory.AddNewLinePtPt(refPt3, refPt4)
Call hbWork.AppendHybridShape(hsLine3)
Call partNew.UpdateObject(hsLine3)
Set refLine3 = partNew.CreateReferenceFromObject(hsLine3)
Dim hsLine4 'As HybridShapeTypeLib.HybridShapeLinePtPt
Dim refLine4 'As INFITF.Reference
Set hsLine4 = hsFactory.AddNewLinePtPt(refPt4, refPt1)
Call hbWork.AppendHybridShape(hsLine4)
Call partNew.UpdateObject(hsLine4)
Set refLine4 = partNew.CreateReferenceFromObject(hsLine4)
 
Dim hsFill 'As HybridShapeTypeLib.HybridShapeFill
Set hsFill = hsFactory.AddNewFill()
Call hsFill.AddBound(refLine1)
Call hsFill.AddBound(refLine2)
Call hsFill.AddBound(refLine3)
Call hsFill.AddBound(refLine4)
Call hbWork.AppendHybridShape(hsFill)
Call partNew.UpdateObject(hsFill)
 
ココナラはダメポwww

VBAをVBSに変換するトランスパイラ

2023-03-21 14:31:09 | VBA
VBA(Visual Basic for Applications)からVBS(Visual Basic Script)にコードを変換することは可能ですが、完全に自動化することはできません。これは、VBAとVBSの文法や機能の違いがあるためです。

以下は、VBAからVBSに変換する際の一般的な手順です。

VBAコードをVBSに変換する前に、VBAコードの機能を理解しておく必要があります。VBAコードが何をしているかを把握しておくことが、VBSコードへの変換に役立ちます。

VBAコードをVBSに変換する前に、VBSの文法と機能を学びます。VBSは、VBAとは異なる文法と機能を持っているため、変換する前にVBSを学ぶことが重要です。

VBAコードをVBSに変換する際に、VBAコードを順番に読んで、VBSコードに変換します。VBAのコードを一行ずつ読み、その行をVBSに変換します。

変換したVBSコードを実行し、動作を確認します。変換後のコードが正常に動作することを確認することが重要です。

このプロセスは手作業で行う必要がありますが、オンラインでVBAからVBSに変換するツールもいくつかあります。ただし、自動変換ツールを使用する場合は、変換されたコードの品質に注意する必要があります。自動変換ツールは、文法の違いに対応できない場合があります。

申し訳ありませんが、私は個別の自動変換ツールを推奨することはできません。オンラインで利用可能な自動変換ツールはいくつかありますが、それらの品質や安全性については保証できません。自動変換ツールを使用する場合は、必ずバックアップを取り、変換後のコードを手動で確認することをお勧めします。また、自動変換ツールを使用する前に、VBSの文法と機能についての理解が必要です。

オンラインで利用可能な自動変換ツールには、以下のようなものがあります。

CodeVBA(https://www.codevba.com/) - VBAからVBSへの変換をサポートしています。無料版と有料版があります。

Convert VB to VBScript(https://www.dotnetspider.com/resources/31688-Convert-VB-VBScript.aspx) - VBScriptへの変換をサポートしています。無料で使用できます。

VB-VBA Code Converter(https://sourceforge.net/projects/vbvbacodeconverter/) - VBAからVBSへの変換をサポートしています。無料で使用できます。

ただし、これらの自動変換ツールは、完全に正確に変換できるわけではありません。一部の機能は変換できない場合があるため、変換後のコードの品質を手動で確認することが重要です。また、セキュリティ上のリスクもあるため、信頼できるサイトからのみ使用することをお勧めします。

手書きの曲線を平滑化する方法5選

2023-03-21 13:08:27 | CATIA
使えなくなったCATIAを再度購入してインストールし、CATIAの独学を再開した。
サフェースモデリングにおいて、曲線を自由自在に描くという件に関して致命的な問題点が再び思い浮かんだ。
テキストに書かれている方法はフリーハンドではなく、複数の円弧を継ぎ接ぎする方法であった。
こんなやり方では面倒だし、理想の曲線に忠実ではなくなるのではないかと思った。
そこで先日記事した最小ニ乗法が再登場し、それ以外の手法についてもChatGPTを使って調べてみた。

任意の曲線を平滑化する手法には最小ニ乗法、ロバスト最小二乗法などがあります。他にはどんな手法があるか紹介してください。

曲線の平滑化には、以下のような手法があります。

1.ローパスフィルター
時系列データに対して、周波数成分の高いノイズを除去するフィルターです。単純な移動平均フィルターやローパスフィルターや、より複雑なバターワースフィルターなどがあります。

2.カーネル平滑化
カーネル平滑化は、窓関数を用いて、信号を局所的に平滑化する方法です。窓関数には、矩形窓や三角窓、ガウス窓などがあります。

3.フーリエ変換
信号を周波数領域に変換して、周波数成分を取り出し、高周波成分を除去する方法です。高速フーリエ変換(FFT)を用いて、効率的に計算することができます。

4.ウェーブレット変換
信号を時間領域と周波数領域の両方で分析する方法で、高周波成分と低周波成分を分離することができます。ウェーブレット変換には、離散ウェーブレット変換(DWT)や連続ウェーブレット変換(CWT)などがあります。

5.ノンパラメトリック回帰
回帰分析を行い、信号の背景トレンドを推定する方法です。カーネル回帰やローム推定などがあります。ノンパラメトリック回帰は、局所的な平滑化に適しています。

これらの手法は、データに応じて適切な手法を選択する必要があります。


ExelVBAでチャット形式で直線を描くプログラム

2023-03-21 09:46:39 | VBA
以下の手順のチャット形式で直線をエクセルのワークシートに描くVBAプログラムを作成してください。
始点の座標の入力を求め、次に終点の座標の入力を求める方式または、始点の座標の入力を求め、次に角度と直線の長さの入力を求める方式で、入力結果をワークシートに表示する。

以下は、始点と終点の座標を入力する方式で直線を描画するVBAプログラムの例です。

Sub DrawLine() Dim StartX As Integer Dim StartY As Integer Dim EndX As Integer Dim EndY As Integer ' 始点の座標の入力を求める StartX = InputBox("始点のX座標を入力してください") StartY = InputBox("始点のY座標を入力してください") ' 終点の座標の入力を求める EndX = InputBox("終点のX座標を入力してください") EndY = InputBox("終点のY座標を入力してください") ' 直線の描画 With ActiveSheet.Shapes.AddLine(StartX, StartY, EndX, EndY) .Line.Weight = 2 ' 線の太さを指定 End With End Sub

このプログラムを実行すると、始点と終点の座標を入力するダイアログボックスが表示されます。入力された座標を使って、指定された場所に線を描画します。

以下は、始点の座標と角度・長さを入力する方式で直線を描画するVBAプログラムの例です。

Sub DrawLineByAngleAndLength() Dim StartX As Integer Dim StartY As Integer Dim Angle As Double Dim Length As Double Dim EndX As Integer Dim EndY As Integer ' 始点の座標の入力を求める StartX = InputBox("始点のX座標を入力してください") StartY = InputBox("始点のY座標を入力してください") ' 角度と長さの入力を求める Angle = InputBox("角度を度数法で入力してください(0~360)") Length = InputBox("長さを入力してください") ' 終点の座標の計算 EndX = StartX + Length * Cos(Angle * 3.14159 / 180) EndY = StartY + Length * Sin(Angle * 3.14159 / 180) ' 直線の描画 With ActiveSheet.Shapes.AddLine(StartX, StartY, EndX, EndY) .Line.Weight = 2 ' 線の太さを指定 End With End Sub


このプログラムを実行すると、始点の座標と角度・長さを入力するダイアログボックスが表示されます。入力された情報を使って、指定された角度と長さに従って線を描画します。

上記に追加で次のプログラムの作成をしてください。 マクロのファイルを開くと、何をしますか?と訊いてきてツリー形式でメニューを表示し、「直線を描く」を選択した場合、「始点と終点の座標を入力する」方法と「始点の座標と角度と直線の長さを入力する」方法のどちらかを選ばせる。 次に選んだ方法で入力を求める。

以下は、マクロのファイルを開くとメニューを表示し、直線を描く際に始点と終点の座標を入力する方法と始点の座標と角度と直線の長さを入力する方法を選択するダイアログボックスを表示するVBAプログラムの例です。

Sub ShowMenu() Dim UserChoice As Integer ' メニューの表示 UserChoice = MsgBox("何をしますか?" & vbNewLine & vbNewLine & "1. 直線を描く", vbOKCancel) ' 直線を描くを選択した場合の処理 If UserChoice = vbOK Then ' 描画方法の選択 UserChoice = MsgBox("どのように描画しますか?" & vbNewLine & vbNewLine & "1. 始点と終点の座標を入力する" & vbNewLine & "2. 始点の座標と角度と直線の長さを入力する", vbOKCancel) ' 始点と終点の座標を入力する方法を選んだ場合の処理 If UserChoice = vbOK Then DrawLineByCoord ' 始点の座標と角度と直線の長さを入力する方法を選んだ場合の処理 ElseIf UserChoice = vbOK + 1 Then DrawLineByAngleAndLength End If End If End Sub

このプログラムを実行すると、最初にメニューが表示されます。メニューの1番目の選択肢である直線を描くを選択すると、次に描画方法の選択ダイアログボックスが表示されます。選んだ描画方法に応じて、始点と終点の座標を入力する方法または始点の座標と角度と直線の長さを入力する方法のダイアログボックスが表示されます。



CATIAのBIM化は果たして可能なのか?

2023-03-21 06:30:18 | CATIA
CATIAをRevitのようなBIMとして使う方法は?

CATIAは、RevitのようなBIMツールではありませんが、BIMの原則に基づいた設計を行うことができます。以下は、CATIAをBIMとして使用するための一般的な手順です。

1.3Dモデルの作成:CATIAを使用して、建物の3Dモデルを作成します。建物の外観、内部レイアウト、構造などを含め、建物の各部分を詳細にモデリングします。建物の部品、構造、外観、性能、材料などの情報を含め、3Dモデルに付加情報を追加します。

2.パラメータの設定:建物の3Dモデルに対して、異なるパラメータを設定します。建物の部品、構造、外観、性能、材料などの情報を含め、異なるパラメータを定義します。これにより、建物の設計変更に柔軟に対応することができます。

3.データの抽出:CATIAからデータを抽出し、BIMツールであるRevitなどのソフトウェアにインポートすることができます。これにより、建物の構造、部品、性能などの情報を含め、異なるBIMツールで情報を共有することができます。

4.シミュレーションの実行:建物の性能をシミュレーションし、設計変更が必要な場合には、3Dモデルを更新して、異なるパラメータを設定します。

これらの手順に従って、CATIAをBIMとして使用することができます。ただし、CATIAは主に製造業界で使用されるCADソフトウェアであり、RevitのようなBIMツールではありません。建築業界に特化したBIMツールを使用することをお勧めします。