2016-11-22 54 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產品可以和實例產品不能設置實例名稱 – 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

確切地說,這只是卡蒂亞錯誤的證據,但我認爲它甚至可以用於R19 ...所以是的,我從零開始構建產品,它基於某種文件夾結構,其中包含任何類型的數據,除了我創建後不能更改名稱 – tsolina