Problème Macro pour CATIA V5R14 - VB/VBA/VBS - Programmation
MarshPosté le 15-05-2006 à 14:17:14
Bonjour, Je développe une macro en VBA pour CATIA V5R14. La macro effectue des opérations sur un document de type « Drafting » et je rencontre des problèmes avec certaines fonctions :
- la fonction GetBoundaryBox(), elle doit me retourner la position de ma dimension sur le calque de travail. Le problème est que jai toujours le même message derreur :
Compile error : Function or interface marked as restricted, or the function uses an automation type not supported in Visual Basic
Voici laide proposé par DS pour cette fonction:
o Sub GetBoundaryBox(CATSafeArrayVariant oValues) Get boundary box coordinates of dimension value. Parameters: oValues List of boundary box coordinates (X1,Y1,X2,Y2,.....X4,Y4). Example: This example gets boundary box coordinates of MyDimension path. MyDimension.GetBoundaryBox(oValues)
Mon programme pour cette fonction : (je veux lire la position de la dimension)
Sub CATMain() '--------------------------------------------------------------------------- '1/ Lecture du document .CATDrawing ouvert '--------------------------------------------------------------------------- Dim DrwDoc As DrawingDocument 'Variable type de document Set DrwDoc = CATIA.ActiveDocument 'on active le document '--------------------------------------------------------------------------- '2/ Sélection du calque contenant les vues à copier '--------------------------------------------------------------------------- Dim oSheetSource As DrawingSheet 'Variable calque source Set oSheetSource = DrwDoc.Sheets.Item("Sheet.1" ) 'nom du calque source
'--------------------------------------------------------------------------- '3/ Sélection de la vue à copier '--------------------------------------------------------------------------- Dim oViewSource1 As DrawingView Set oViewSource1 = oSheetSource.Views.Item("AB-AB" )
oViewSource1.Activate oSheetSource.Activate Set DrwDoc = CATIA.ActiveDocument
Dim oDimensions As DrawingDimensions Set oDimensions = oViewSource1.Dimensions
Dim oDimension As DrawingDimension Set oDimension = oDimensions.Item(1)
Dim selection1 As Selection Set selection1 = DrwDoc.Selection selection1.Clear selection1.Add oDimension
Dim X1 As Single Dim Y1 As Single Dim X2 As Single Dim Y2 As Single Dim X3 As Single Dim Y3 As Single Dim X4 As Single Dim Y4 As Single oDimension.GetBoundaryBox X1, Y1, X2, Y2, X3, Y3, X4, Y4
End Sub
- Je souhaiterais créer une droite, toujours dans un document Drafting (jusque la tout va bien), mais je voudrais que cette droite est une contrainte de type fixe (et là, cest le drame). Jarrive à appliquer des contraintes dans un document de type « .Part » mais je ne parviens pas à trouver la fonction pour le Drafting.
Si vous avez des infos sur ces fonctions, je suis preneur. Merci par avance. Stéphane.
Marsh Posté le 15-05-2006 à 14:17:14
Bonjour,
Je développe une macro en VBA pour CATIA V5R14. La macro effectue des opérations sur un document de type « Drafting » et je rencontre des problèmes avec certaines fonctions :
- la fonction GetBoundaryBox(), elle doit me retourner la position de ma dimension sur le calque de travail. Le problème est que jai toujours le même message derreur :
Compile error :
Function or interface marked as restricted, or the function uses an automation type not supported in Visual Basic
Voici laide proposé par DS pour cette fonction:
o Sub GetBoundaryBox(CATSafeArrayVariant oValues)
Get boundary box coordinates of dimension value.
Parameters:
oValues
List of boundary box coordinates (X1,Y1,X2,Y2,.....X4,Y4).
Example:
This example gets boundary box coordinates of MyDimension path.
MyDimension.GetBoundaryBox(oValues)
Mon programme pour cette fonction : (je veux lire la position de la dimension)
Sub CATMain()
'---------------------------------------------------------------------------
'1/ Lecture du document .CATDrawing ouvert
'---------------------------------------------------------------------------
Dim DrwDoc As DrawingDocument 'Variable type de document
Set DrwDoc = CATIA.ActiveDocument 'on active le document
'---------------------------------------------------------------------------
'2/ Sélection du calque contenant les vues à copier
'---------------------------------------------------------------------------
Dim oSheetSource As DrawingSheet 'Variable calque source
Set oSheetSource = DrwDoc.Sheets.Item("Sheet.1" ) 'nom du calque source
'---------------------------------------------------------------------------
'3/ Sélection de la vue à copier
'---------------------------------------------------------------------------
Dim oViewSource1 As DrawingView
Set oViewSource1 = oSheetSource.Views.Item("AB-AB" )
oViewSource1.Activate
oSheetSource.Activate
Set DrwDoc = CATIA.ActiveDocument
Dim oDimensions As DrawingDimensions
Set oDimensions = oViewSource1.Dimensions
Dim oDimension As DrawingDimension
Set oDimension = oDimensions.Item(1)
Dim selection1 As Selection
Set selection1 = DrwDoc.Selection
selection1.Clear
selection1.Add oDimension
Dim X1 As Single
Dim Y1 As Single
Dim X2 As Single
Dim Y2 As Single
Dim X3 As Single
Dim Y3 As Single
Dim X4 As Single
Dim Y4 As Single
oDimension.GetBoundaryBox X1, Y1, X2, Y2, X3, Y3, X4, Y4
End Sub
- Je souhaiterais créer une droite, toujours dans un document Drafting (jusque la tout va bien), mais je voudrais que cette droite est une contrainte de type fixe (et là, cest le drame). Jarrive à appliquer des contraintes dans un document de type « .Part » mais je ne parviens pas à trouver la fonction pour le Drafting.
Si vous avez des infos sur ces fonctions, je suis preneur. Merci par avance.
Stéphane.