2016-11-22 22 views
0

の名前を変更し、私は期待通りのコードのこの部分が動作しないという一つの特定の問題があります。私は、さまざまなレベルでのインスタンス名を変更しようとしていますcatvba、CATIA製品はバグ

Private Sub productRename() 
    Dim oProd As Product 
    Set oProd = CATIA.Documents.Add("Product").Product 

    Set oProd = oProd.Products.AddNewComponent("Product", "") 
    oProd.Name = "prod.1" 

    Set oProd = oProd.Products.AddNewComponent("Product", "") 
    oProd.Name = "prod.2" 
End Sub 

を、最初のレベルで動作しますが、ではありません他のレベルでは特定のスクリプトは新しい製品を作成し、サブ製品を追加して名前を変更し、別のサブレベルを追加して名前を変更しようとしますが、エラーは発生せずにスクリプトは最後のインスタンスを変更せずに終了します。新しく作成された製品のみが存在するため、インスタンス名は矛盾していません。

問題がR24 sp4に表示されるので、別のspレベルで動作することを誰かが確認できますか?

答えて

1

新しい子を追加する代わりに、インスタンス製品の参考製品を使用して、インスタンス名に

Dim PN As String 
PN = "12345" 
Dim instanceName as String 
instanceName = "12345.X" 

Set oProd3 = oProd2.ReferenceProduct.Products.AddNewComponent("Product", PN) 
oProd3.Name = instanceName 
+0

これは正解です、ありがとう! ref製品ができる理由とインスタンス製品cantがインスタンス名を設定する理由を知ってうれしい – tsolina

0

コードはr25でも同じです。

私はこのような何かしようとするだろう:

Sub CATMain() 

Dim oProd As Product 
Set oProd = CATIA.Documents.Add("Product").Product 

Set oProd1 = oProd.Products.AddNewComponent("Product", "prod.1") 
'~ oProd1.Name = "prod.1" 

Set oProd2= oProd1.Products.AddNewComponent("Product", "prod.2") 
'~ oProd2.Name = "prod.2" 

    Set oProd3 = oProd2.Products.AddNewComponent("Product", "prod.3") 
'~ oProd3.Name = "prod.3" 

End Sub 
+0

を設定することができるはずのおかげferdoしかし、私はこれもやっていますが、これはcatpartsでは有効ですが、.cgrではなく、異なるレベルのインスタンスがある場合もあります。製品が作成されると、その名前は変わることがあります、奇妙な – tsolina

+0

多分私はしませんでしたあなたがしたいことを理解しましたが、あなたのコードとあなたの説明から新しい製品をお互いの下に追加し、最初から名前を変更したいと思っているということです。実際に何をしたいですか?すべての種類のCATIAファイルを使用して全く新しい製品構造を作成するには? – ferdo

+0

正確には、これはCatiaのバグを証明するものに過ぎませんでしたが、R19で作業していたと思います...はい、私は何かのフォルダ構造に基づいてゼロから製品を構築しています。彼らが作成された後に名前を変更できない – tsolina