So-net無料ブログ作成
  • ブログをはじめる
  • ログイン

SW VBAで出来ること [SW VBA]

色々調べていますが、海外サイトを含めて画期的なマクロにはまだ遭遇していません。
色合いの変更に関するマクロも見つかりません。
(但し、デフォルトの色を変更するものはあります。)

形状作成をすることが、自分の中では主な内容なのですが、円柱や四角柱や円錐を
作成するぐらいです。

補助的なことよりもやはり、本格的な形状を作成できないとマクロの意味がありません。

SOD以外にも無料ダウンロードできるようにした5つのDelphiスクリプトに対応するような
3D形状は作成したいものです。
http://sophil3.blog.so-net.ne.jp/2018-03-28

1.AL_SMD_Drafting
2.AVR_Drafting
3.QFP_Creator
4.SOP_TSOP_Creator
5.TN_SMD_Drafting

形状コピーとミラーリングができさえすれば作成可能な筈なのですが、どうなるでしょうか。

AltiumのDelphiスクリプトを作成した時も情報が少なくて苦労しましたが
SW VBAはそれと互角かそれ以上に難しいかもしれません。


nice!(0)  コメント(0) 

SW押し出し角度 [SW VBA]

ソリッドワークスの押し出し角度(テーパ)を1度ずつ設定してそれに該当する場所の値をチェックして
みました。
VBAに関する、自分の覚書でもあります。

そのままの角度ではないようです。
逆三角関数なのかな?
計算すればいいのでしょうが桁数が多いのでこのコメントをそのままVBA内に記載した方がいい
でしょう。

'1度 1.74532925199433E-02
'2度 3.49065850398866E-02
'3度 0.05235987755983
'4度 6.98131700797733E-02
'5度 8.72664625997167E-02
'6度 0.10471975511966
'7度 0.122173047639603
'8度 0.139626340159547
'9度 0.15707963267949
'10度 0.174532925199433


しかし、0度でも1度と同じ値なので不思議でした。
そうすると角度の前の項目がFalseになっていたのでそれでテーパ無しの
0度とするのでしょう。
テーパをオンにしたらすぐに1度が表示されるという意味でもあるのでしょう。

Part.FeatureManager.FeatureExtrusion2(******* 
に続く部分の話です。

テーパ無し
False, False, False, False,角度1,角度2

テーパ有り
True, True, False, False,角度1,角度2



nice!(0)  コメント(0) 

SOD SW VBA Part.2 [SW VBA]

SODのフォームは少しだけすっきりさせました。
また、基準点の赤い十字を追加配置しています。

4種類のページ選択タブのアルファベットに対応し不要なものは非表示としてあります。
数値も上限下限を設けて、リード線は小数第2位までで、それ以外は小数第1位で四捨五入させて
います。
更に、その値はその数値入力枠内にフィードバックして表示させています。
つまり、Hに2.111と入力した場合は2.1と処理し再表示します。

これ以外に入力値のエラーチェックの必要もあります。
例えば、リード線の幅 Lw がボディーの横幅 W を超えることはないので、その場合はメッセージが出る
ようにしました。

vba_sod2.png

現状では押し出しまで動作しています。
高さは4mmを入力していますが、平面1は基準となる正面から0.05mm持ち上げている面なので
立体物(または押し出し寸法)としては3.95mmとなります。

SOD_VBA_EX2.png

平面1が正面から0.05mmオフセットを掛けているのは、半田上がりを考慮してのことで殆どのデバイスで
こういった作成方法にしています。
手動だと0.05mmの引き算を考慮しないといけないのですが、マクロだと自動なのでありがたいです。
しかし、実際には更に複雑で、中間辺りから5度ぐらいのテーパで上下両方に押し出しとなります。
高さHが2mmの場合は1mmのオフセットの高さから上に1mm、下に0.95mmとなるでしょう。

まだ、色の切替えやスケッチ面を作成した立体物の面にするなどの難関がいくつもあります。


nice!(0)  コメント(0) 

AVRやトランジスタの形状 [SW VBA]

これらのフットプリントをDelphiスクリプトで作成した時は一つの画像でした。
後からこちらの記事のように変更しようとして断念した経緯があります。

http://sophil3.blog.so-net.ne.jp/2017-05-03

しかし、SW VBAでのメニューフォームでは逆にタブで区別(PageControl)した方が良さそうです。
フットプリント作成スクリプトではパッドやシルクを作成する都合があるので複雑ですが
ソリッドワークスでは形状だけを作成するので部品の形状に寸法を示す画像は簡単にできるからです。
画像は160px x 160px で作成していますが、これを4種類作成する必要があるので
一から作成し直さなければなりませんでした。

AVR_Delphi_Form.png

くどい感じもしますが、Delphiスクリプトのフォームのように数値入力するのに、他のタイプの
寸法の図のアルファベットを見なくていいでしょう。

SOT_TOxxx.jpg


nice!(1)  コメント(0) 

SW VBAの利点 [SW VBA]

プログラミングをしていて、途中で時々は挫けそうなことがあります。

その時に思ったのが、ソリッドワークスには各年度によるバージョンがあり互換性に
問題がある場合もあります。
SW VBAでは特にバージョンによる違いは、動作させた限りはありません。
VBA自体にもバージョンは少ないので問題はないでしょう。

つまり、SW VBAでは自社で作成できるのでバージョンを気にしなくていいという
利点があります。
これでSW VBAを最後まで作成していこうというテンションになれました。


nice!(1)  コメント(0) 

Form関連のVBA [SW VBA]

SW VBAの場合にフォームを使用する場合は、購入した英文の書籍は全く役に立っていません。
VBA関連でもメニューとしてフォームを作成している書籍は極めて少ないようです。

サンプルとなる資料を解析しながら作成し、他の部分はインターネットで項目ごとに調べて
います。

手持ちの秀和システムの「Visual Basic2013/パーフェクトマスター」に少しだけフォームの
使い方が書かれていましたが、細かい部分にまで触れるとページが増えるので控えているのでしょう。

「Altium Designer」でDelphiスクリプトを作成する時も結局は1冊の書籍だけで後は、こつこつ
資料を探すだけでした。
それで知ったことをまとめて「Delphi」の資料にすることも難しいので、自分の作成したプログラムの
一部分を次のプログラミング時に参考にすることが多いです。

今回もそういう流れになりそうです。

nice!(0)  コメント(0) 

今後のSW VBA [SW VBA]

まだSODのSW VBAは完成していませんが、今後のことも考えながら作成しないといけないので
予定を組んでみました。

作成中のSODを1番として番号割振りは2番からとします。

2.AVR
3.QFP
4.SOP_TSOP
5.Chip_LCR
6.SMD_TN(チップタンタルコンデンサ)
7.SMD_AL(チップアルミ電解コンデンサ)

プログラミングとしては簡単な2.のQFPなどから始めた方が良かったような気がします。
SOP_TSOPは、フットプリント作成の場合とは違ってSOP、SSOP1、SSOP2、フォトカプラー
とページコントロールした方がいいのかもしれません。
SSOP1、SSOP2の違いは1番ピン付近を丸の凹みで処理するか1ピン側のボディを45度カットする
タイプかです。
フォトカプラーは色がベージュの場合があるので色を黒/ベージュを選択する必要があります。
Chip_LCRの場合に、LとCの違いは色合いだけで、Rは電極がコの字なので形状が異なります。
だたこれは四角い形状で、すでに定番のファイルがあるので敢えてプログラミングしてまで作成する
意味があるのか悩みます。

このように3D形状の場合は、色合いも考慮する必要があるのでフォーム作成の難しさが
あります。


nice!(0)  コメント(0) 

SOD SW VBA Part.1 [SW VBA]

以前の下記の記事の続きですがまだ先が長いので短い名前にしてPart.1としておきます。
SODのフォームをSW VBAにて

以前のフォームは設計画面でしたがこちらは実際にVBAを実行させたものなのでグリッドは見えません。
文字入力が数字かどうか、その入力値が上限下限の設定などプログラミングの先は長そうです。

vba_sod1.png

数値かどうかはDelphiとは違ってIsNumeric関数が使えるのがありがたいです。
タブの縁の色が薄くて4つの内どのタブを選択しているのかわかりにくいけれど
色は直接指定できないのでプログラムでの記述のようです。
まずは見栄えから調整していきます。


nice!(1)  コメント(0) 

SODのフォームをSW VBAにて [SW VBA]

ダイオード(SOD)のフットプリントはDelphiスクリプトで完成させていますが
それをソリッドワークスのVBAでも実現させようと思いつきました。

まずはそのフォームをDelphiスクリプトに準拠して作成しました。
そのまま作成すればいいと思っていましたが、実際にはDelphiスクリプトの場合はシルクやパッドの
項目があるので流用はできないのです。
(どちらの画像もフォームの設計画面なので位置の目安となるグリッドのドットが記載されています。)

SOD_Pas.png

という訳で平面図は作り直して、側面図には高さHを追加しました。
一般的な形状の場合はSOD***という番号に準拠している筈なのでそれを入力すれば規定値を
各欄に事前に入力しておくと、作成するものとの違いがわかって便利でしょう。
保存する名前を記載する欄があるといいのかもしれませんが、それは終盤になって決めます。

SOD_VBA.png

ソリッドワークスのVBAは始めたばかりなのでどのようなAPIがあるか不明です。
出来上がるまではまだ先が長そうです。


nice!(1)  コメント(0) 

Solidworks VBAの資料探し [SW VBA]

ブログをインターネット検索して調べると「Solidworks」を販売している数社の資料か
そのサポートをしている社員のブログぐらいしか資料はないように感じます。

自分の操作をマクロで登録して、それを弄って学ぶことを誰もが勧めています。
色々な使い方ができるのでそのどれもをカバーできないという意味なのかもしれません。

他の言語に慣れている人がブログの記事を書かれているようで、その記載内容も
途中が飛んでいたりするのであまり参考にはならないようです。

最終目標は、「Altium Desigener」にてDelphiで作成したフットプリントを作成するスクリプトと
ほぼ同じフォームを「Solidworks」のVBAで作成し、同じ数値を入れるようにすることです。

同じ数値をいれるのは二度手間なので連動すればいいのですが「Altium Desigener」側に自由度が
ないので、それは厳しいのかもしれません。


nice!(0)  コメント(0) 

SoildWorksスケッチ初期設定 [SW VBA]

新規作成時にスケッチの無い図面は保存できないのでテンプレートとして処理しにくいです。

通常はグリッド設定は1mmで10分割で、グリッド表示させていますが
これを毎回設定していました。
オプション設定をファンクションキーに割付けても意外と時間が掛かります。

一応、下記の設定で動作しています。

SoildWorksのマクロのカテゴリが無かったので「SW VBA」という項目を設けました。

'SetUp ----------------------------------------------------

Dim swApp As Object
Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long

Sub main()

Set swApp = Application.SldWorks
Set Part = swApp.ActiveDoc
boolstatus = swApp.SetUserPreferenceDoubleValue(swUserPreferenceDoubleValue_e.swViewAnimationSpeed, 0)

swApp.SetUserPreferenceToggle swUserPreferenceToggle_e.swAutoSaveEnable, True
boolstatus = swApp.SetUserPreferenceIntegerValue(swUserPreferenceIntegerValue_e.swAutoSaveInterval, 10)
boolstatus = Part.Extension.SetUserPreferenceDouble(swUserPreferenceDoubleValue_e.swGridMajorSpacing, 0, 0.001)
boolstatus = Part.Extension.SetUserPreferenceInteger(swUserPreferenceIntegerValue_e.swGridMinorLinesPerMajor, 0, 10)
boolstatus = Part.SetUserPreferenceToggle(swUserPreferenceToggle_e.swGridDisplay, True)

MsgBox "1mmグリッド、10分割でグリッド表示"

End Sub



nice!(0)  コメント(0) 

SolidWorksでの3D形状作成マクロ Part.3 [SW VBA]

注文していた以前にも紹介した「Automating SOLIDWORKS 2017 Using Macros」が届きました。

A4縦を縦方向を2cm程度短くしたサイズでした。
洋書にしては読みやすい構成でした。
(英語は苦手なのであくまでも見た目の話です。)

操作画面の図に関しては荒い感じがします。
色々なSolidWorksのバージョンで改訂しているようなのでこの書籍は実績はあるのでしょう。
見た瞬間に外れと感じる洋書もありますが、少なくともそういう書籍ではありませんでした。

基本的な部分だけでフォームを使って具体的に処理をするいうものには触れていませんでした。
VBAに関してはEXCELなどで事前に慣れていないといけないでしょう。


nice!(0)  コメント(0) 

SolidWorksでの3D形状作成マクロ Part.2 [SW VBA]

少ないながらも文献などをみると
EXCELからVBAで「SolidWorks」を操作する場合と
「SolidWorks」上でVBAで処理する場合があるようです。
逆にVBAでEXCEL側に部品表などの資料を絵柄付きで出力することも可能なようです。

図面をTiff出力する場合もあるようですが、Tiffファイルは現在では殆ど使用して
いないので意外でした。

「SolidWorks」は毎年のバージョンがあるので、個々の部品の改版履歴をそのバージョンを
示しながら記載するマクロもあるようです。
図面の違いを表示してくれるマクロもあるようですが、大規模な図面では重要です。
その内容からするとシステムエンジニアでないと難しそうです。


nice!(0)  コメント(0) 

SolidWorksでの3D形状作成マクロ [SW VBA]

STEPファイルを作成する場合に、定番の工程もあるのでVBAで処理したいとは思って
いましたが、ついつい後回しになっています。

ある程度の形状は規格化して保存してあるのでそれをアレンジすれば作成可能ですが
それでは進歩がありません。

VBAなので作成用フォーム(メニュー)も作成して利用している記事も見かけます。
これをアレンジすれば面倒な表面実装コネクタや、更に面倒なフラットケーブルコネクタ
などが作成できそうです。

もし、挫けなければ年内には出来上がるでしょう。

関連書籍は日本語版は適切なものは見つかりませんでした。
洋書ではこちらが候補で注文しました。

インターネット検索したらこちらのドイツ語/英語表記のマクロを見つけました。

http://swtools.cad.de/macros.htm

その中の上から9番目のこちらは動作確認しました。

「Show / hide features in feature manager (multi-language)」

mm_17.zip

SW_Macro_Ex.jpg

nice!(0)  コメント(0) 

ソリッドワークスでのマクロ [SW VBA]

ソリッドワークスで実際にマクロを登録して編集してみました。
編集画面はEXCELのマクロを扱っているようにそっくりです。

新規部品編集の時にグリッドをオンで1mmで10分割することが多いので
それをマクロを記録しました。
しかし、実際に再生すると途中で止まるのでその部分を’を入れてコメント扱いに
するとSW2010では問題なく動作しました。
しかし、再生時にどこにあるマクロを再生するのか聞いてくるのでボタンに
登録しても時間が掛かります。

続きを読む


nice!(0)  コメント(0) 

ソリッドワークスでのVBA [SW VBA]

ソリッドワークスではエクセルとほぼ同じVBAが利用できるようです。
VBではなくてVBAというのは今の私の技量としてはうれしいことです。

編集画面も似ているようです。
まだソリッドワークスではそのマクロで何ができるか
何が必要かを思い浮かべることができていません。
nice!(0)  コメント(0)