So-net無料ブログ作成
検索選択

Delphiの「XPComboBox」 [AD Delphi Script]

DelphiスクリプトSummer09で動作させる場合に通常の「ComboBox」だと
登録当初は動作しますが、アプリを再起動させると動作しないという状況でした。

フォームである*.dfmをテキストエディタで見ると記載はされているので
何ら問題なくAD14.3などでは動作します。

Summer09で使いたい場合、似たような機能の「XPComboBox」であれば
問題なく動作するようです。

続きを読む


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

Delphiでフォームを常に最前面にするには [AD Delphi Script]

フォームのあるスクリプトでSCHやPCB作業画面中にその画面の裏に隠れてしまうことが
あります。

今まではこれの対策の為に、末尾にcancelを記述することで
即刻終了ということで回避していました。

ネットで調べたらこれを回避する方法がありました。

Form画面にて
「ObjectInspector」内にある「FormStyle」を「fsNormal」から「fsStayOnTop」に
変更してください。

続きを読む


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

Pad,Viaの配置パレット その2 [AD Delphi Script]

スクリプトの方はある程度は出来上がりましたがPadとViaは使い道が違うので
それぞれ別のスクリプトにすることにしました。

つまりPadを配置するのは部品作りの場面が殆どで
Viaを配置するのは基板設計業務の時だけで、部品作りでViaを使用することは
極めて稀でしょう。

どちらも似たような形状でありながら使い方が違うので別のスクリプトとするのが
ベストだと考えました。

Viaの直径と穴径(mm)は現状では5種類です。
0.6/0.3
0.7/.35
1.0/.5
1.5/0.8
2.0/1.0

続きを読む


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

Pad,Viaの配置パレット [AD Delphi Script]

Schにて「VCC,GNDの配置パレット」のようなスクリプトを作成したので
そのPCB版として「Pad,Viaの配置パレット」のスクリプトを作成中です。

PadとViaのデフォルトをその都度に細工すれば配置するのはRunProcessで配置が可能
なのですがそういう訳にもいかないようです。
デフォルトを書き換えるAPIがないし、出来てもそれを元に戻してからスクリプト
終了をする必要があるからです。

という訳でRunProcessに頼らずに一から配置するスクリプトを作成することにしましたが
これが手ごわいです。

続きを読む


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

Roomによるブロック移動 [ALTIUM DESIGNER]

ある程度は構成が決まっているブロックの移動であれば
Design > Rooms でパーツの上にRoomを置けば、それ以降はRoomをつかめば移動する
ことが可能です。

Room内のパーツは自動的にクラス訳されるようなので、個別に部品を分ける場合は
Roomを解除するかこのクラスを削除する必要があります。

Tool > Place Component > Arrange Within Room
にてRoom内に詰める(集合する)ことが可能です。
上部に溜まる場合は、Roomを小さくして再度、実行すれば詰まります。

続きを読む


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

Re-AnnotateのWasIs [ALTIUM DESIGNER]

Altium DesignerのPCBファイルにてDesignatorをRe-Annotate(リナンバリング)した場合は
Undoがあるためなのか何もファイルが生成されないようです。
同じAltium DesignerのSCHとペアで使用している場合はこれでも問題ないかもしれません。

しかし、リナンバリングしたPCBデータをOrcadの回路図にバックアノテートするには
それではNGです。

そこで可能性のある方法としては
リナンバリングする前にPick And Placeファイルを作成し、リナンバリング後にも同様に
Pick And Placeファイルを作成します。
次にそれらのファイルをエクセルに読み込んで同じ座標のものがビフォー/アフターだと
わかるマクロを作成すればいいでしょう。

続きを読む


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

ADスクリプトで利用する色 [AD Delphi Script]

スクリプトを利用して回路図の部品の色を変えたりする場合は
こちらの情報によれば
http://techdocs.altium.com/display/ADRR/Schematic+Processes

R+256*(G+(256*B))
で記載するようになっています。

具体的には

黒 :Color=0
赤 :Color=255
緑 :Color=65280
青 :Color=16711680

なので、例として下記のように0を記載すればその部分が黒色になります。

AddStringParameter('Color',0);

続きを読む


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

Place_PP_*** スクリプト その2 [AD Delphi Script]

今回作成したスクリプトは最終的にはGND系に「Signal GND(下向きの矢印)」を
追加しました。

またネットネームは小文字であっても大文字に自動的に変換する
UpperCase を採用しました。

実際に回路図入力時にこのスクリプトを動作させてみると、かなり楽になり
小文字のままでもよいので、これまでの入力の手間が嘘のようです。
特にVCC系で、-5Vなどの向きをスペースキーで逆にする手間がないのはありがたいです。

続きを読む


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

スクリプトフォームの前面表示 その2 [AD Delphi Script]

スクリプトフォームを常に前面に表示する方法に関して特に回避方法がなかった
のでスクリプトの最後のEND;の前に

Close;

を配置して解決しました。
これでスクリプトが終了するので再度設定したショートカットなどで
スクリプトを再実行することになります。




フォームの表示位置はフォーム(名前:Formの時)にそのフォームを
クリックして
Procedure TForm.FormShow(Sender: TObject); をいう項目を作成します。

後は下記のようにフォームの左上の座標(100,100)を記載すれば表示位置を
指定できます。

************************************************
Procedure TForm.FormShow(Sender: TObject);

Begin

Left := 100;
Top := 100;

End;
************************************************

続きを読む


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

スクリプトフォームの前面表示 [AD Delphi Script]

Place Power Portスクリプトはほぼ完成したのですがそのスクリプトのフォーム
配置後に回路図シートに隠れて背面になることです。

スクリプトをメニューに登録してショートカットキーを割り振れば改善するかと
思ったのですが、すでにスクリプトが動作中というメッセージが表示されます。

背面に行ったフォームを再度表示させてから作業を開始することになります。

Delphi自体にはフォームを前面に表示する「SetWindowPos」というのがありますが
どうやらAltiumのスクリプトではエラーになるようです。

続きを読む


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

Place_PP_*** スクリプト [AD Delphi Script]

決まった値のVCC、GNDであればランプロセスに記載してスクリプト処理できますが
色々なネット名に対応するには無理があります。

そこで考えたのが下記のようなフォームを持つスクリプトです。





VCC系で-5Vや-12Vなど先頭の文字がマイナスであれば配置する向きを180度に
しておけば後からスペースキーで回転させる手間が省けそうです。
GND系にマイナスの文字を入れることは少ないので矛盾はありません。

スタイルはVCC、GND共に2種類に限定ラジオボタンの選択ミスを減らそうと
しています。

続きを読む


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

VCC、GND配置のスクリプト [AD Delphi Script]

前の記事の続きで
SCHで電源関連のポート配置をするスクリプトを記述してみました。

特に問題なく動作しています。
プロジェクトファイルはこれら複数のスクリプトを統括する形にしています。

カスタマイズ画面でメニューのどこかに登録すれば使いやすくなります。
実務では電源の呼び名によって種類が多くなるのが難点かもしれません。




矢印タイプの+12Vのスクリプト
PlacePP_A_P12V.pas
****************************************************
Procedure PlacePP_A_P12V();
Var
   CurrentSheet    : ISch_Document;

Begin
   If SchServer = Nil Then Exit;

   CurrentSheet := SchServer.GetCurrentSchDocument;
   If CurrentSheet = Nil Then Exit;

{ Set  ------------------------------------}
   ResetParameters;
   AddStringParameter('Orientation','1');
   AddStringParameter('S','+12V');

{Style: Arrow}
   AddStringParameter('Style','1');
   AddStringParameter('Repeat','True');

   RunProcess('Sch:PlacePowerPort');

End;
****************************************************

続きを読む


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

PlacePowerPortのRun Process [ALTIUM DESIGNER]

AltiumDesigner SCHにてVCCやGNDを記載するにはやや種類が少ないようです。
空いている適当な場所に一旦配置してから編集してそれを配置している方が多いのでは
ないでしょうか。

そこで「PlacePowerPort process」に記載されている内容を説明します。
これをRun Processコマンドで処理すればいいでしょう。
実務ではそれも面倒なのでスクリプトにしてメニューに登録するというカスタマイズ
必要でしょう。

Orientation *****
向き
0 0 degrees
1 90 degrees
2 180 degrees
3 270 degrees


S *****
文字
例)
S=+5V , S=+12V

続きを読む


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

BOMからネットリスト生成 [EXCELマクロ]

以前から間接的にはBOMからネットリストを生成させていましたがそれはマクロの
作成作業の都合からでした。

客先のBOMとそれに対応しているネットリストを比較するマクロにて
その機能を追加しました。
というのもネットリストを生成する前に客先から供給されたBOMがそもそも合っているか
どうかを同時に支給されたネットリストと比較してからの方が安全だからです。
また、支給されたBOMもカンマの位置などの癖もあるので事前に修正してからという
こともあります。

続きを読む


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

SCH LibIterator その2 [AD Delphi Script]

前の記事の続きです。
タブ形式にするために下記のようにタブコード#9を間に挟みました。
ReportInfo.Add(LibComp.LibReference  + #9 + LibComp.Comment.Text . . .)

これで問題なくスクリプトは動作しています。
問題はその結果です。


上図のようにCommentを通常通りにしないで別途宣言した値Valueを参考にするように
指定するとその項目は
=Value
となります。

続きを読む


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

SCH LibIterator [AD Delphi Script]

SCHのスクリプトにてオリジナルの「LibIterator」を少しだけ修正して
Libref、Comment、Discription、Designator(Default)を出力できる
ようにしました。

修正、追加した部分は主にこちらです。
----------------------------------------------------------
ReportInfo.Add(' LibReference : ' +LibComp.LibReference );
ReportInfo.Add(' Comment : ' +LibComp.Comment.Text );
ReportInfo.Add(' Description : ' +LibComp.ComponentDescription);
ReportInfo.Add(' Default Des. : ' +LibComp.Designator.Text);
----------------------------------------------------------

Descriptionが長い場合があるのでこのようにしましたが
タブ形式などにしてEXCELで読み込みやすいファイル形式にする手法も
あります。

続きを読む


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

NETLISTエディター/マクロ その3 [EXCELマクロ]

NETLIST EDITORのマクロではCとRを別々に置換できるマクロを作成したので
それとは別のマクロも修正しました。

それはNETLISTを読み込んでその型番を置換してネットリストの部品情報として
処理するマクロです。
CとRを別々に置換できるマクロはこちらでも生かせて編集の精度が上がります。
ICなどは記載されている型番をそのまま転記できるように改善しました。

抵抗などの値で末尾が*FCというのは弊社では、金被抵抗としてR2012M(Mはメタライスドの略)
として置換させています。
(まずい場合はそれを別の型番に再度の置換も可能です。)

続きを読む


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

NETLISTからBOM作成ができたら その2 [EXCELマクロ]

BOMの作成は断念しました。
それはネットリストから生成したBOMが細かいと消しこみにくいからです。
細かく集計しないで縦の行でそのままになっている方が込み合っていなくて
チェックしやすいとプログラミングの途中で気がつきました。

同じBOMフォーマットパソコンで完全比較できれがそれでもいいのですがそういう
訳にもいかないでしょう。

続きを読む


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

IPC Footprint Wizard でのSTEP Model作成 [AD16]

AD16ではIPC FootprintとSTEP Modelが同時に作成できます。
これでかなり省力化ができるでしょう。

いままでソリッドワークスでSTEP Modelを作成していましたがそれが無駄になるような
気がします。
しかし、考えてみるとIDF経由で3Dモデルを作成するには3DCADでないと無理です。

続きを読む


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

NETLISTからBOM作成ができたら [EXCELマクロ]

以前からネットリストから簡易BOMは作成していましたが
フットプリントとコメント欄に空白があると分類ができないのが難点でした。

回路設計者は基板設計をしないことがあるのでフットプリント欄を空白にする場合が
あるのでコメント欄をすべて埋めて、これを基準に簡易BOMを作成していました。

顧客からのBOMが正確なのかを消しこみチェックするには、多少は雰囲気が異なっていても
別に何かの資料が必要なのです。
(現状ではREF番号と同じ行がある簡易BOMではややわかりにくいのです。)

続きを読む


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