[CATIA V5 掲示板にもどる]
CATIA V5 掲示板 返信フォーム

- 以下は、記事NO. 5835 に関する 返信フォーム です -

マクロの質問 どんちゃん - 2009/08/25(Tue) 11:01 No.5835
こんにちわ。CATScriptについて質問させて下さい。
と言いつつVBA、VBSの基礎の近いのかも知れませんが。。

VBAでは型を宣言しますが、VBSだとしない方が良いと聞きます。
でも例えば記録で取ると下の様な型が宣言されます。
CATIA的には宣言した方が良いものと良くないものがあるのでしょうか?

Dim doc1 As Documents
Dim partDoc1 As PartDocument
Dim part1 As Part
Dim param1 As Parameters
Dim length1 As Length

VBAでは無駄にメモリを使わないように型を宣言。
VBSではそれが仇となる??
みなさんはVBSだと型はまったく宣言しませんか?

必ず出る訳ではないですが、CATIAをしばらく使った後などに
VBSを実行すると謎なオーバーフローに悩まされてます・・。

Re: マクロの質問 さなだ丸 - 2009/08/25(Tue) 11:43 No.5836
VBAとVBS、どちらのときでも私は宣言して作ります。
なぜ、VBSだと宣言しないほうがいいのかというのは、わかりません。

この話の中で、回答に迷う点があります。
コード内で、
Dim doc1
Dim doc2
と記述してある場合は、普通宣言するとみなします。
Dim doc1 As Variant もしくは、Dim doc1 As Object
Dim doc2 As Variant もしくは、Dim doc2 As Object
というのを、省略しただけのことだからです。
ただ、ソフトの世界でこの省略はあまりやるべきではないという認識があります。
どうせなら、型がわかるように省略しないものを使いましょうということです。

型宣言というのは、メモリ管理のためだけに宣言するものではありません。
宣言というのは、どの変数が使われており、どの変数がどの型なのかというのを分かるために記述します。
結果、メモリ使用量をちょっと減らすことができるという感じです。数バイト単位でしょうが。

VBの特性上宣言しなくても変数は使うことが出来ますが、
そうすると、ミスが増えるということがあります。
変数のスペルを打ち間違えてても、正常動作してしまうこともあります。
宣言が必須にしておけば、宣言のない変数はデバッガなどで見つけることが出来ます。(VBの Option Explicit)

CATIAにはちょいと面倒なオブジェクトがいたりします。
実際に入っているはずのオブジェクトで宣言するとうまくいかず、Variantで宣言しておくと正常動作するというものがいます。

どちらにせよ、VBAやVBS、VBで作るものは、宣言くらいはつけておいたほうが良いと私は思います。
後でメンテするときに大変なことになりますのでね。

Re: マクロの質問 どんちゃん - 2009/08/25(Tue) 12:01 No.5837
回答ありがとうございます。
まだまだ試行錯誤しながら作っているレベルなので(^^;)
私も宣言は癖を付けるよう心がけてはいるのですが、
StringやInteger、他にCATIA独自の型を宣言して作ったVBSだと何か不安がありまして。。。

VBSでは全てVariantにすれば良いと言う事でしょうか?
CATIA独自の型もObjectかVariantのみなら安定するのでしょうか?

Re: マクロの質問 さなだ丸 - 2009/08/25(Tue) 14:38 No.5839
VBSやVBAでObject型やVariant型で宣言しておけば、一応動作はします。
ただ、やっぱりお勧めはできません。

私は、VBからCATIAに入ったので、自分で宣言コードを書くのに違和感はないですので、ちょいと不安についてはコメントが難しいです。

当社でマクロを作る場合、ほとんどVBSで作ることはありません。VBAも少しだけです。VBで開発したモジュールをVBSやVBAでコールするという形で作っています。
まず、ボタンから呼ぶものの場合はVBA経由で作ります。
KWAなどのVBスクリプトからコールするもののみVBS経由で作ります。
基本的に動作などはVBで作っています。
ですから、VBSもVBAも完全に宣言して行っています。

プログラマにとっては、〜 As Objectとか、〜 As Variantという宣言では分かりづらいです。ですから、これらを使用するときには宣言のうしろに理由をコメントしています。

安定という話なんですが、
おそらく、正確に宣言したほうが安定すると思いますし、なにより、安全です。

Re: マクロの質問 どんちゃん - 2009/08/26(Wed) 09:20 No.5843
なるほど・・・。
簡単にツールを作って展開するとき、VBSが一番管理しやすいので
ついついVBSにしてしまいます。
個人的にはVBAの方が好きなのですけど、管理するものが増えてくるのでちょっと・・・な面も。

そんな中、VBSにStringやInteger その他、型をしっかり宣言しているとなんだか動きが不安定に感じまして。。

配列のEraseもしているのに配列部でオーバーフローなど。

すべてVariantにしてみて様子見します。

Re: マクロの質問 さなだ丸 - 2009/08/26(Wed) 13:59 No.5853
管理するものが増えるという点に関しては、VBAのほうが少なくてすみますよ。

VBAでそれぞれ新規で標準モジュールを追加すれば、モジュールごとにmain()が作成できます。

そうすれば、ライブラリを1つのCATVBAファイルに統合できますので、私は管理が簡単だと思ってます。


おなまえ
タイトル    
コメント ico ico ico ico ico ico ico ico ico ico ico ico ico ico ico
添付データ 添付可能ファイル GIF,JPEG,PNG,LHA,ZIP 最大データ 1000KB
データ 1
データ 2
暗証キー  記事メンテ時に使用(英数字で8文字以内)
投稿キー  (投稿時 投稿キー を入力してください)