基礎教育 を受けただけで CATIA-V5 が使えるようになりましたか? あとは独学じゃつらいですよね。 LOG087 BACK
catia-v5 catiaV5 掲示板 CATIA V5 BBS
クリックすると、IGSをDLできます。
CATIA V5ユーザのほか、CADに関心のあるみなさんの「悩み/疑問/質問」等を通じて、
例題など交えながら、スキルアップやお役立ち情報などの交換ができればと思います。

おなまえ   ★ CAD関連BBS ★
Eメール    Space-E  Rhino  Pro-E 
タイトル
コメント
URL
  画像データ(JPG,GIF,PNG)と圧縮データ(LZH,ZIP)の添付
添付データ1
添付データ2
IGES,STEP等のデータは圧縮(lzh,zip)して添付して下さい。
暗証キー 記事修正削除時に使用(英数字で8文字以内)

VBAコーディング CATIA始めて3ヶ月 - 2005/07/25(Mon) 12:09 No.2081   返信 修正・削除
以前ここで質問させていただきましたCATIA始めて3ヶ月の者です。
いろいろ読ませていただいております。(自己レスですが、InsertInNewBodyの件は無理そうなので諦めました)
そこで自分もクレクレ君では大変申し訳ないですし、みなさんのお力になれればと思いまして
自分の知っている部分のVBのコーディングのノウハウを少し書いてみたいと思います。

VBAの起動 →
  KYKSさんが解説くださっている通りです。VBの画面が立ち上がってVB上でコーディングできます。
  初期時に何か設定が必要だった気もしますが・・・よく覚えてません。スミマセン。

左のエクスプローラバー →
  ここに作成されているマクロが一つ一つ別々のModuleとして表示されています。
  エクスプローラ上で右クリック-Insert-Moduleでマクロが一つ追加されます。
  このModule一つの単位が一つのマクロという感じです。(実際は中にCATMainを記述して初めて一つのマクロとなります)
  ちなみにInsert-UserFormで画面を作成することができます。

中央のエディタ部 →
  ・カーソルのある位置でF9押下でBreakPoint設置/取り消しできます。
  ・変数上で右クリック-Add Watchで表示された画面でOKすると画面下にWatches画面が出ます。デバック時に
   設定された変数内にどのような値がその時に入っているか確認できます。
  ・getobjBody.Shapes などのShapes部分にカーソルを当てて右クリック-Definitionで関数一覧画面が表示されます。
   ここで対象の関数がどのClassに属しているか、仲間のMenberはどのようなものがあるか、また対象の関数が
   何の引数が必要かが分かります。
  ・コーディング時に"CATIA.ActiveDocument.Part"などを記述する場合、CATIAまで記述し、.(ドット)を打つと
   自動的にそのClassのMenber一覧が表示されて何が使用できるかが分かります。(出ない場合は何か設定が必要かも)
   コーディング自体はほぼVBが使用可能です。

コーディング →
  ・CATMainよりも上部でOption Explicitを記述すると以降のコーディング部分で宣言されていない変数を
   使用するとエラーとなります。これを使い、明示的に変数の宣言を行うクセをつけておくと自分で変数の型が何かわからずに
   パニックになるのが防げます。
  ・シングルコーテーション「'」でコメントアウトです。コメントを記述する場合、記述してあるコード自体を無効にしたい
   場合に使用します。また、VBAの画面上部のツールバー上で右クリック-Editにチェックをつけて出てくるツールバーに
   便利なコメントアウトのボタンがあります。コード内をドラックして複数行選択を行う-ツールバーの左から9つ目のアイコン
   (CommentBlock)を押下すると選択された範囲全てがコメントアウトします。戻すときは同様に複数行選択して右隣のUnCommentBlock
   を押下するとコメントアウトが外れます。

実行 →
  ・F5押下で実行します。F9でBreakPointを設定した場合はその場所まで一気に実行します。
  ・F8押下で実行します。F5と違い一行ずつ実行していきます。F8を押せば次の行を実行していきます。
   その時点でマウスカーソルを変数などに当てると、中にどのような値が入っているか(またはNothing)が表示されます。

即興で書いてみたのであまり詳しくない気もしますが・・・
また、「こんなこと言われなくても知ってるよ」という部分もあるかと思いますがそのような部分はご容赦ください。
ちなみに当方はVBプログラマ4年→CATIA3ヶ月です。
このような部分で分からない所があれば何なりと聞いてください。答えられる範囲でみなさんのお力になれればと思います。
長々と失礼しました。

最上段 最下段



Re: VBAコーディング mmy - 2005/07/25(Mon) 13:21 No.2082   返信 修正・削除

CATIA始めて3ヶ月さん こんにちは。 ありがとうございます。

 モデリング中に頻繁に使用するコマンドに「非表示/表示」「作業オブジェクトとして設定」があって、
 「非表示/表示」は、「ツール」>「カスタマイズ」>「コマンド」のアクセラレータで、ショートカットキーを
 関連付けできるのですが、「作業オブジェクトとして設定」ができません。(グレーアウトしていて入力できない)

 で、VBA(マクロ)で可能なのか判らないのですが、マクロで何とかならないものかと考えています。
 (マクロを使用しないで、直接ショートカットキーを割り当てられることがベストです。)

 マクロを記録してみると

Language="VBSCRIPT"

Sub CATMain()

Set partDocument1 = CATIA.ActiveDocument

Set part1 = partDocument1.Part

Set bodies1 = part1.Bodies

Set body1 = bodies1.Item("パーツ ボディー")

part1.InWorkObject = body1 'パーツ ボディーを「作業オブジェクトとして設定」

Set hybridBodies1 = part1.HybridBodies

Set hybridBody1 = hybridBodies1.Item("形状セット.1")

part1.InWorkObject = hybridBody1 '形状セット.1を「作業オブジェクトとして設定」

End Sub

 この様になりました。
 
 やりたいことは、事前にマウスでエレメント(パーツ ボディー、形状セット)を選択しておいてマクロを実行して
 「作業オブジェクトとして設定」することなのですが可能でしょうか?
 (このマクロにショートカットキーを割り当てておいて実行させたいと思っています。)

親記事 最上段 最下段



Re: VBAコーディング CATIA始めて3ヶ月 - 2005/07/25(Mon) 14:20 No.2084   返信 修正・削除

mmyさんこんにちわ。
早速のレスありがとうございます。

さて、ご質問のあった件ですが自分も詳しいわけではないので以下の方法でいいかは
分からないのですが・・・

方法:
  ・マクロが保存されている状態(動くことが前提です)でCATIAをActiveにします。

  ・Tools−Customize−Commandsのタブを押下してください。

  ・左欄のCategoriesからMacrosを選択すると右欄に保存されているマクロが一覧表示されると思います。

  ・今、割り当てたいマクロの名前をドラッグします(そのままドラッグしたままの状態で・・・)

  ・CATIA右欄にあるツールバーの中、一緒に入れたい欄にドロップします。
   (ここ分かりづらいですよね?自分もあまり良く分かってないんですが、例えばスケッチャーアイコンと
   同じグループにこのマクロを登録したい場合はスケッチャーアイコンの下にある▼でドロップします。
   また、このマクロだけは他のどのツールバーにも属さないようにしたい場合は新規でツールバーを作成
   する必要があるようです。ちょと時間ないのでこれは確認してませんので後日ということで)

  ・この状態で「...」のアイコンを押下すると対象のマクロのアイコンを決めれます。

  ・おそらくこの時点でご指摘のあったショートカットの関連付けの部分がActiveになっているかと思います。

  ・※ちなみにドロップして決定されたアイコンをツールバーからドラッグし、Commandsの画面の一覧にドロップすると
   ツールバーから削除することができるみたいです。「失敗した」とか思ったらこの方法で外せるみたい。

こんな感じでできるのではないかと思います。
自分でも確認してみたらできたので大丈夫かと・・・
また、ツールバーに設定せずにショートカットキー割り当てのみで使用することはできないみたいな感じを受けました。
(もしかしたら知らないだけでできるかもですが)
ツールバーからアイコンを外したら、ショートカット割り当てのグレーアウトがかかってしまいました。

親記事 最上段 最下段



Re: VBAコーディング mmy - 2005/07/25(Mon) 16:28 No.2085   返信 修正・削除

お世話になります。

Set body1 = bodies1.Item("パーツ ボディー")
Set hybridBody1 = hybridBodies1.Item("形状セット.1")

 の部分ですが、現在マウスクリックして選択されている(バックがオレンジ色で反転している)エレメントを 指定するには、どの様にしたら良いでしょうか?
 選択されているエレメントによって、body1、hybridBody1 の部分も変わると思うのですが・・

親記事 最上段 最下段



Re: VBAコーディング CATIA始めて3ヶ月 - 2005/07/26(Tue) 10:13 No.2089   返信 修正・削除

mmyさんこんにちわ。
返信遅れて申し訳ありません。
あと、質問の意図を取り違えていたみたいで申し訳ありませんです。

ということで作成してみました。こんな感じでどうでしょうか?

'_/_/_/ ここから _/_/_/
Option Explicit

Sub CATMain()

On Error Resume Next

Dim objSelection As Selection
Dim FoundObject As AnyObject

Set objSelection = CATIA.ActiveDocument.Selection

Dim strObjName As String
Dim strObjType(50) As String
Dim iLpCnt As Integer
Dim a As SelectedElement

'// Paturn1
strObjType(0) = "CATIABody"
strObjType(1) = "CATIAHybridBody"
'// Paturn2
' strObjType(0) = "CATIAPad"
' strObjType(1) = "CATIASketchBasedShape"
' strObjType(2) = "CATIAPocket"
' strObjType(3) = "CATIAShaft"
' strObjType(4) = "CATIAGroove"
' strObjType(5) = "CATIAHole"
' strObjType(6) = "CATIARib"
' strObjType(7) = "CATIASlot"
' strObjType(8) = "CATIAAssemble"
' strObjType(9) = "CATIAAdd"
' strObjType(10) = "CATIARemove"
' strObjType(11) = "CATIAIntersect"
' strObjType(12) = "CATIATrim"
' strObjType(13) = "CATIADraft"
' strObjType(14) = "CATIAFillet"

For iLpCnt = 0 To 50
Set FoundObject = objSelection.FindObject(strObjType(iLpCnt))
If (Err.Number = 0) Then
strObjName = FoundObject.Name
Exit For
Else
Err.Clear
End If
Next iLpCnt

If (strObjName = "") Then
Call MsgBox("選択されたオブジェクト名が取得できません", vbExclamation & vbOKOnly, "処理終了")
Else
Call MsgBox("選択されたオブジェクト名は => " + strObjName, vbInformation & vbOKOnly, "処理終了")
End If

End Sub
'_/_/_/ ここまで _/_/_/

とりあえずBodyかHybridかが知りたいだけならばPaturn1の方法で、要素が属しているBodyの名称が取得できます。
さらに細かく要素一つ一つまで知りたい場合はPaturn2の方を使用してください。
ちなみに全ての要素を判別できるようにするためにはこの配列に一つずつ全て記載していく必要があります。
なにか他に良い方法があればいいのですが、自分が知っている限りではこれが妥当のような気がします。
mmyさんの使用方法だとPaturn1で取得できたBodyを作業オブジェクトに設定すれば良いと思います。

親記事 最上段 最下段



Re: VBAコーディング mmy - 2005/07/26(Tue) 11:47 No.2090   返信 修正・削除

CATIA始めて3ヶ月さん、ありがとうございます。

 As‥ と (Next) iLpCnt のところをコメントアウトして(実行時にエラーになるようです。)
 オブジェクト名の取得に成功しました。(V5R14)

 以下のようにしてみたのですが、「作業オブジェクトとして設定」できないですね。(エラーは出ませんでした)
 もちょっと頑張ってみます。


Option Explicit

Sub CATMain()

Dim partDocument1, part1

Set partDocument1 = CATIA.ActiveDocument

Set part1 = partDocument1.Part

On Error Resume Next

Dim objSelection 'As Selection
Dim FoundObject 'As AnyObject

Set objSelection = CATIA.ActiveDocument.Selection

Dim strObjName 'As String
Dim strObjType(50) 'As String
Dim iLpCnt 'As Integer
Dim a 'As SelectedElement

'// Paturn1
strObjType(0) = "CATIABody"
strObjType(1) = "CATIAHybridBody"
'// Paturn2
' strObjType(0) = "CATIAPad"
' strObjType(1) = "CATIASketchBasedShape"
' strObjType(2) = "CATIAPocket"
' strObjType(3) = "CATIAShaft"
' strObjType(4) = "CATIAGroove"
' strObjType(5) = "CATIAHole"
' strObjType(6) = "CATIARib"
' strObjType(7) = "CATIASlot"
' strObjType(8) = "CATIAAssemble"
' strObjType(9) = "CATIAAdd"
' strObjType(10) = "CATIARemove"
' strObjType(11) = "CATIAIntersect"
' strObjType(12) = "CATIATrim"
' strObjType(13) = "CATIADraft"
' strObjType(14) = "CATIAFillet"

For iLpCnt = 0 To 50
Set FoundObject = objSelection.FindObject(strObjType(iLpCnt))
If (Err.Number = 0) Then
strObjName = FoundObject.Name
Exit For
Else
Err.Clear
End If
Next 'iLpCnt

If (strObjName = "") Then
Call MsgBox("選択されたオブジェクト名が取得できません", vbExclamation & vbOKOnly, "処理終了")
Else
'Call MsgBox("選択されたオブジェクト名は => " + strObjName, vbInformation & vbOKOnly, "処理終了")

If ( inStr(strObjName,"形状セット") = 0 ) Then
Set bodies1 = part1.Bodies
Set body1 = bodies1.Item(strObjName)
part1.InWorkObject = body1

Else
Set hybridBodies1 = part1.HybridBodies
Set hybridBody1 = hybridBodies1.Item(strObjName)
part1.InWorkObject = hybridBody1
End If

End If

End Sub

親記事 最上段 最下段



Re: VBAコーディング CATIA始めて3ヶ月 - 2005/07/26(Tue) 12:45 No.2091   返信 修正・削除

mmyさんはVBScriptを使用してのコーディングでしたか。
失礼いたしました。
自分の書いたコードはVBA用ですので要所要所がエラーとなったようです。
VBA上では問題なく動作し、mmyさんのコードの後半部分を流用して作業オブジェクトに設定することもできました。
ちなみに自分の環境もV5R14です。
プログラムとしてはVBScriptではできないこともVBAだと可能だったりします。
複雑なことをさせたい場合はVBAでのコーディングをお勧めしますよ。

親記事 最上段 最下段



Re: VBAコーディング mmy - 2005/07/26(Tue) 13:44 No.2092   返信 修正・削除

ありがとうございます。
 おかげさまで私にもできました。

 「ツール」>「マクロ」>「Visual Basic エディタ」を開き

 (以下コード)
Option Explicit

Sub CATMain()

On Error Resume Next

Dim objSelection As Selection
Dim FoundObject As AnyObject

Set objSelection = CATIA.ActiveDocument.Selection

Dim strObjName As String
Dim strObjType(50) As String
Dim iLpCnt As Integer
Dim a As SelectedElement

'// Paturn1
strObjType(0) = "CATIABody"
strObjType(1) = "CATIAHybridBody"
'// Paturn2
' strObjType(0) = "CATIAPad"
' strObjType(1) = "CATIASketchBasedShape"
' strObjType(2) = "CATIAPocket"
' strObjType(3) = "CATIAShaft"
' strObjType(4) = "CATIAGroove"
' strObjType(5) = "CATIAHole"
' strObjType(6) = "CATIARib"
' strObjType(7) = "CATIASlot"
' strObjType(8) = "CATIAAssemble"
' strObjType(9) = "CATIAAdd"
' strObjType(10) = "CATIARemove"
' strObjType(11) = "CATIAIntersect"
' strObjType(12) = "CATIATrim"
' strObjType(13) = "CATIADraft"
' strObjType(14) = "CATIAFillet"

For iLpCnt = 0 To 50
Set FoundObject = objSelection.FindObject(strObjType(iLpCnt))
If (Err.Number = 0) Then
strObjName = FoundObject.Name
Exit For
Else
Err.Clear
End If
Next iLpCnt

If (strObjName = "") Then
Call MsgBox("選択されたオブジェクト名が取得できません", vbExclamation & vbOKOnly, "処理終了")

Else
'Call MsgBox("選択されたオブジェクト名は => " + strObjName, vbInformation & vbOKOnly, "処理終了")

Dim partDocument1, part1
Set partDocument1 = CATIA.ActiveDocument
Set part1 = partDocument1.Part

If (InStr(strObjName, "形状セット") = 0) Then
Dim bodies1, body1
Set bodies1 = part1.Bodies
Set body1 = bodies1.Item(strObjName)
part1.InWorkObject = body1

Else
Dim hybridBodies1, hybridBody1
Set hybridBodies1 = part1.HybridBodies
Set hybridBody1 = hybridBodies1.Item(strObjName)
part1.InWorkObject = hybridBody1
End If

End If

End Sub
 (以上コード)

名前を付けて保存して、No.2084 の方法でショートカットキー割り当てもできました。

親記事 最上段 最下段



補足です。 mmy - 2005/07/26(Tue) 15:16 No.2093   返信 修正・削除

「作業オブジェクトとして設定」をアクセラレータに関連付けするのは
 No.2084 の手法で可能です。(マクロ作成の必要はありません。)

親記事 最上段 最下段



無題 it - 2005/07/25(Mon) 13:23 No.2083   返信 修正・削除
はじめまして。アセンブリで接触拘束がつけられないのですがどのようなことが考えられますか?教えてください。お願いします。

最上段 最下段



Re: 無題 mmy - 2005/07/25(Mon) 16:50 No.2086   返信 修正・削除

itさん こんにちは。

 双方に「固定拘束」がかかっているとか、拘束に矛盾はありませんか?
 できれば「接触拘束がつけられない」ファイルを添付して頂けると検証しやすいのですが・・

親記事 最上段 最下段



Re: 無題 it - 2005/07/25(Mon) 17:37 No.2088   返信 修正・削除

mmyさんありがとうございます。双方に固定拘束がついていました。すいませんが添付はできないんですよ。申し訳ございません。

親記事 最上段 最下段



「表示されないハッチング」 悩める中年 - 2005/07/22(Fri) 18:42 No.2077   返信 修正・削除

こんにちは。またまたこの掲示板に教えを乞うべく投稿させて頂きました。

以前、NO.1989でムーミンさんが似た話題をご投稿してらっしゃいましたが、CATIAのDraftingでは領域が狭い箇所にハッチングをかけた場合、一本も斜線が引けない際には添付図のように太線表示されるのは皆様ご存知の通りです。

これでは困るので、太線部をクリックして設定変更をかけたいところなのですが、大抵の場合一発で太線をピック出来ないため、一旦重なっている線を消して、太線ピックして設定変更してまた線引きなおす・・・という要領悪いことやってます。

事前にハッチング間隔設定を狭めてから再トライしようともしましたが、オプション-初期設定ではそのようなことが出来ない?様です。(少なくともワタクシには・・・)

皆様はどのようにご対処されていますか?

最上段 最下段



Re: 「表示されないハッチング」 名無しの・・・ - 2005/07/22(Fri) 23:48 No.2078   返信 修正・削除

ハッチングの設定はよく分かりませんが、線が重なって思うように選択できない場合、線にカーソルを合わせ、キーボードの↑↓キーで重なった線を順に選択できます。
なお、この機能は、どのワークベンチでも使えます。(たぶん・・・)
ドラフティングでは、できない事が多々あり、そんな時は、「Alt」キーを押しながら線をクリックして下さい。同じように重なった線を選択できます。
(「Alt」キーの方法は、いつから使用可能になったのか分からないので使用できない場合はごめんなさい。R14ではできます。)

親記事 最上段 最下段



Re: 「表示されないハッチング」 K - 2005/07/23(Sat) 00:35 No.2079   返信 修正・削除

図をマウスでドラッグして選択→Alt+Enterでプロパティを出して、パターンのタブでハッチングを変更できませんか?

親記事 最上段 最下段



Re: 「表示されないハッチング」 悩める中年 - 2005/07/23(Sat) 23:16 No.2080   返信 修正・削除

名無しの・・・さん、
Kさん、
アドバイスありがとうございました!!
何とか↑↓キーを使用する方法で出来ました!
感激です。こんな方法があったなんて・・・
本当にこの掲示板はためになります。

また今後ともよろしくお願い致します。

親記事 最上段 最下段



VBAから干渉/接触を使用するには KYKS - 2005/07/19(Tue) 01:15 No.2064   返信 修正・削除
こんばんは。KYKSと申します。
VBAからClashを使用したいと考えていますが
どうしても一部うまくいかない所があります。
もし、知っている方がいらっしゃいましたらアドバイス頂けないでしょうか。

トップのProduct以下に2つのProduct(仮にPdt_A/Pdt_B)の2つとして、「2つの選択の間」で干渉チェックを実現しようと考えています。
プログラムにすると(宣言は省略させて頂きます)
Set TopProduct = CATIA.ActiveDocument.Product
Set Cshes = TopProduct.GetTechnologicalObject("Clashes")
Set Csh = Cshes.Add

Csh.ComputationType = 3 '<- 2つの選択の間を指定
Csh.FirstGroup.AddExplicit Pdt_A
Csh.SecondGroup.AddExplicit Pdt_B '<- ここで失敗します

ComputationTypeに3以外を設定していた場合に、SecondGroupのセットに失敗するのであれば分かりますが、
3(2つの選択の間)を指定していても、失敗してしまいます。

試しに、失敗する行を外して実行後ツリーの干渉をダイアログで確認すると
「2つの選択の間」が設定されています。

また、干渉を手作業で作成(予め準備しておく)し選択1/2に何も指定せずプログラムからセットしようとすると
Set Csh = Cshes.Item(1) '<- 手作業で作成したものを指示
Csh.FirstGroup.AddExplicit Pdt_A
Csh.SecondGroup.AddExplicit Pdt_B '<- 失敗しない
以上のプログラムで正しく使用できます。

VBAから干渉を追加する場合、他に必要な手続きがあるのでしょうか。
よろしくお願いいたします。

最上段 最下段



Re: VBAから干渉/接触を使用するには mmy - 2005/07/19(Tue) 14:57 No.2068   返信 修正・削除

KYKSさん こんにちは。

 CATIA始めて3ヶ月さんのご質問に関しても同様なのですが、
 私自身マクロ初心者ということもあって、なかなか的確なお答えができなくてすみません。
 いつも参考にさせて頂いているURLがありますので、ご紹介します。

 ここなさんのところ↓
 http://coconut.s41.xrea.com/phpBB/portal.php

 きっと良い回答を頂けると思います。
 我々にも勉強になりますので、よろしくお願いします。

親記事 最上段 最下段



Re: TRY中でしたが・・・ emily - 2005/07/19(Tue) 20:20 No.2070   返信 修正・削除

わたしも
> Csh.SecondGroup.AddExplicit Pdt_B '<- ここで失敗します
までは、再現しました。2〜3日CATIAから遠ざかるんで、自宅から要点のみ。
automation manual home page(?)の.SecondGroupのexampleのように
....
sGroup.AddExplicit Pdt_B
set Csh.SecondGroup = sGroup は、やってみました?
Csh.SecondGroupがインスタンス化される(?)タイミングはFirstとはちがうんじゃないカナ

親記事 最上段 最下段



Re: VBAから干渉/接触を使用するには KYKS - 2005/07/19(Tue) 23:26 No.2071   返信 修正・削除

こんばんは。
mmyさん emilyさん ありがとうございます。

emilyさん
>Csh.SecondGroupがインスタンス化される(?)タイミングはFirstとはちがうんじゃないカナ
そこが、キモなんでしょうね。
干渉のGroupにセットできるタイミングがどこにあるのかだと思っています。
マニュアルの記述に従うと(手元にないので間違っていたらすいません)
Set FirstGrp = Csh.FirstGroup
Set SecondGrp = Csh.SecondGroup
FirstGrp.AddExplicit Pdt_A
SecondGrp.AddExplicit Pdt_B
以上のような流れになるでしょうか。
しかし、VBA環境で2行目終了時の状態を確認してみると
SecondGrp が Nothingになっており、結局 SecondGrp.AddExplicitのところで失敗してしまいます。

mmyさん
ご紹介頂きましたページも参考させて頂きます。

もう少しねばって、いろいろトライしてみます。
ありがとうございました。

親記事 最上段 最下段



Re: .. emily - 2005/07/20(Wed) 07:29 No.2072   返信 修正・削除

retrieveしたらnothingだった[errでなく出来たのは収穫デスヨ]
じゃなくって
> Csh.SecondGroup = sGroup は、やってみました?
(記憶間違いだったらすいません)
これでSecondGを作るというか・・・

mmyさん、はじめまして。こんにちは。
いろんな話題があるんで参考になります。よろしくお願いしま〜す

親記事 最上段 最下段



Re: .. mmy - 2005/07/20(Wed) 16:00 No.2073   返信 修正・削除

emilyさん こんにちは、はじめまして。

 こちらこそ、よろしくお願いします。
 ちなみに私は○&#8600;かな?

親記事 最上段 最下段



Re: .catvbsです emily - 2005/07/21(Thu) 11:10 No.2074   返信 修正・削除

KYKSさん、mmyさんこんにちは
KYKSさんは「もし、知っている方が・・・」と言われているのに対して少し失礼致しました。まあ掲示板ですから私めのような輩もいるということでご勘弁くださいマセ。皆の情報交換の場ですしネ!
下記にてV5R13で動きました。2つのPARTが重なってれば1が表示されます。

Sub CATMain()
Set productDocument1 = CATIA.ActiveDocument
Set TopProduct = productDocument1.Product
Set products1 = TopProduct.Products

Set Pdt_A = products1.Item("Part2.1")
Set Pdt_B = products1.Item("Sub23.4")

Set Cshes = TopProduct.GetTechnologicalObject("Clashes")
Set Csh = Cshes.Add

Csh.ComputationType = 3 '<- 2つの選択の間を指定
Csh.FirstGroup.AddExplicit Pdt_A

set Grps = TopProduct.GetTechnologicalObject("Groups")
set group2 = Grps.Add
Csh.SecondGroup = group2
Csh.SecondGroup.AddExplicit Pdt_B    'OK!!

Csh.Compute
set cflcts = Csh.Conflicts
msgbox cflcts.Count
End Sub

本題からはそれますが、「VBA環境で・・・」といわれているのは、デバッガを使っているということなんですか?
差し支えなかったらどなたか効率的なコーディング/デバッグ法を別記事で上げて下さると助かります。

親記事 最上段 最下段



Re: VBAから干渉/接触を使用するには KYKS - 2005/07/21(Thu) 21:55 No.2075   返信 修正・削除

こんばんは。KYKSです
emilyさん ありがとうございます。
実は私の方でも、今日実現できました。
Set Grps = TopProduct.GetTechnologicalObject("Groups")から
Set SecondGrp = Grps.Addでグループオブジェクトを生成し、
Csh.SecondGroup = SecondGrpでひも付けするという流れですね。

あと、「もし、知っている方が・・・」は表現がよくなかったですね。
私自身はアドバイスを頂いている立場ですし、何か頂いた内容から自分では思考の及ばなかった方向へ考えを転換できるかもしれません。
本音部分で答えを知りたいという思いはありますが、アドバイス/きっかけを頂ける事は本当に助かります。
誤解を与えてしまうような表現となって申し訳ありません。

#VBA環境ですが、[マクロ]の[VisualBasicエディター]で上がる環境のことです。
#私自身、効果的とは言えない・・・ような開発スタイルになっていると思いますが、
#ブレークポイントを設定して、プログラムを一時停止(?)させたり、Locals等のウインドウで変数の値を確認する程度をしています。

親記事 最上段 最下段



Re: こちらこそありがとうございました。 emily - 2005/07/22(Fri) 07:57 No.2076   返信 修正・削除

KYKSさんはお忙しい方のようで、それでも返事を頂き感謝です
私のほうが却って多くのアドバイスをもらいました。[VisualBasicエディター]を早速習得しなくっちゃ。ヘヘッ
ROMの方々にも何かの参考になるでしょうし
それと、蛇足ながら本題でいえば、CAASpaMaximumSeparation.CATScript (automation Documentation Home Page)というサンプルがClashと同じ考え方のものですが、「1つの選択の中」で(つまりFirstGroupだけで)Prdを2つ入れておいてcomputeしてます。Prdを入れ替えていけば、どれとどれの干渉があるとか
すぐ特定できるのでソフトで制御するならこのほうが実用性があったでしょうね(もしかしたらKYKSさんはこれでやったとか?)
公開の場というのもいい時はいいもんですね〜
いい場をご提供下さっているmmyさん、ありがとう!

親記事 最上段 最下段



スケッチャー フクタロウ - 2005/07/19(Tue) 13:53 No.2065   返信 修正・削除
ひとつのパーツボディで、大きさの違う四角い箱を2段重ねるモデルを作ってます。
それぞれの中心線をあわせる方法なのですが、
スケッチ1とスケッチ2の中心線をあわせる方法って、関数を使うしかないのでしょうか?
スケッチ2を作業していると、スケッチ1の中心線が見えなくなり選択できなくなります。
どなたか宜しくお願いします。

最上段 最下段



Re: スケッチャー ムーミン - 2005/07/19(Tue) 14:29 No.2066   返信 修正・削除

的を射ていない答えでしたらm(_ _)m

スケッチャーでスケッチ1の中心線のところに標準エレメントで直線を引いてそれを中心の基準にしてスケッチ2を作成し再度スケッチ1の基準線を削除というのはどうでしょうか?(拘束が保てなくなりますが固定等で代用とか…)

親記事 最上段 最下段



Re: スケッチャー mmy - 2005/07/19(Tue) 14:36 No.2067   返信 修正・削除

 「スケッチ1」を表示した状態で「スケッチ2」に入ります。
 中心線(軸)を2本ひき、それぞれに「スケッチ1」の対辺に対して「対称直線を許可」の拘束をかけます。
 (「拘束」をクリックして「スケッチ1」の対辺を2本選択して、右クリック>「対称直線を許可」で中心線を選択する。)

 「スケッチ2」の対辺に対しても同様の拘束をかければ、中心線を共用できます。

 ムーミンさんがお答えになっていましたね。

親記事 最上段 最下段



Re: スケッチャー フクタロウ - 2005/07/19(Tue) 19:44 No.2069   返信 修正・削除

ムーミンさん、mmyさんアドバイスのように作業したら出来ました。
アドバイスありがとうございました

親記事 最上段 最下段



体積一定でのモデリング くまった - 2005/07/15(Fri) 14:42 No.2056   返信 修正・削除
パラメータを使って体積一定にしたモデリング方法について教えてください。
具体的には、容器内に液体があり、容器形状の変更(液体量一定)や傾きにあわせて液体面を変化させたり、
逆に、液体の量を変えて(容器形状一定)液体面を変化させたり・・・を作りこみたいのです。
パラメータやパブリッシュ辺りのHELP見てますがなかなかわかりません。どなたかわかりましたら教えてください。

最上段 最下段



Re: 体積一定でのモデリング  - 2005/07/16(Sat) 00:44 No.2059   返信 修正・削除

オプティマイザーだったかな・・・

親記事 最上段 最下段



Re: 体積一定でのモデリング くまった - 2005/07/18(Mon) 11:17 No.2063   返信 修正・削除

Zさん有難うございます。
ナレッジアドバイザー(KWA)では出来ないんでしょうか?

親記事 最上段 最下段



T.I.R.とは? でびおか - 2005/07/16(Sat) 01:27 No.2060   返信 修正・削除
こんにちは。はじめまして。

T.I.R. とは 何のことですか?
何かの略ですか?図面用語のようなのですが。
でびおかは、図面勉強中なので、
どなたか教えてください。

最上段 最下段



Re: T.I.R.とは? mm - 2005/07/16(Sat) 14:05 No.2061   返信 修正・削除

Total Indicator Reading
の略で、振れ、偏心の倍のことではないでしょうか。
30年以上現場から離れているので違いましたらご容赦を

親記事 最上段 最下段



Re: T.I.R.とは? でびおか - 2005/07/16(Sat) 17:36 No.2062   返信 修正・削除

ありがとうございました。
T.I.RとはTotal Indicator Reading
の略で、振れ、偏心の倍のことなのですね。

また、いろいろ教えてください。


親記事 最上段 最下段

- Joyful Note -  ☆ WebMaster ☆  - ページTOPへ -  [ CAD:catia V5 P2 R12(SP11) & R13(SP9) & R14(SP4,SP7) & R15(SP3) ] -