2015-04-25 1 views
1

Je travaille avec CATscript dans CATIA pour créer des macros. J'essaye de créer un CATscript pour traduire une caractéristique dans CATIA.Comment traduire une pièce en utilisant CATscript dans CATIA?

Lorsque j'exécute le CATscript I Doit sélectionner la fonction qui doit être traduite et la fonction sera traduite.

Mais je reçois une erreur d'exécution Incompatibilité de type: « part1.CreateReferenceFromObject »

je ne pouvais pas trouver la solution à ce problème. Dans l'attente de votre aide.

Merci à l'avance.

Sub CATMain() 

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

    Set hybridShapeFactory1 = part1.HybridShapeFactory 
    Set hybridShapeDirection1 =  hybridShapeFactory1.AddNewDirectionByCoord(1.000000, 0.000000, 0.000000) 
    Set hybridShapeTranslate1 = hybridShapeFactory1.AddNewEmptyTranslate() 


Set UserSel = partDocument1.Selection 
Dim type1(0) 
    type1(0) = "HybridShape" 
    '-------------------------------------- 

    'Dim input As Object 
    input = UserSel.SelectElement2(type1, "select input.", False) 

Set reference1 = part1.CreateReferenceFromObject(input) 
hybridShapeTranslate1.ElemToTranslate = reference1 

    hybridShapeTranslate1.Direction = hybridShapeDirection1 
    hybridShapeTranslate1.DistanceValue = 1.000000 
    Set hybridBody2 = hybridBodies1.Item("Geometrical Set.3") 

hybridBody2.AppendHybridShape hybridShapeTranslate1 

part1.InWorkObject = hybridShapeTranslate1 

part1.Update 

End Sub 

Répondre

1

votre problème est que vous essayez de créer une référence d'un objet de sélection.

entrée

= UserSel.SelectElement2 (type 1 "sélectionner l'entrée.", False)

Ceci renvoie la sélection du type. Vous pouvez creuser dans l'entrée et obtenir l'objet réel que vous sélectionnez.

essayer:

Dim myReference as Reference 
Dim myExpectedObject as HybridShape 'or use variant 
Set mySelectedObject = input.Item2(1).Value 'this will grab the first item from the selection collection 
set myReference = part1.CreateReferenceFromObject(mySelectedObject) 
'continue the rest of your code 

En outre, vous devriez toujours effacer la sélection avant d'utiliser une sélection d'utilisateur comme une bonne habitude.

UserSel.Clear 'call this before you call a SelectElement selection function