Se connecter avec
S'enregistrer | Connectez-vous

Importer des coordonnées X Y Z d'un fichier Excel dans CATIA V5

Dernière réponse : dans Programmation
Lassé par la pub ? Créez un compte

Ok merci boubpopsyteam.
En fait j'ai déja réussi à récuperer ce principe dans l'aide de CATIA V5 et je l'ai adapté à ce que je voulais donc import de coordonnées d'Excel vers CATIA. Maintenant le problème c'est que ce que j'ai fais la programmation dans l'éditeur VBA Excel, je voudrais que ce programme soit dans l'éditeur VBA de CATIA, afin j'ouvre une page vierge Excel, je rentre les coordonnées dans les colonnes A B et C et CATIA execute l'import des coordonnées pour créer des points.
Expert Programmation

On veut bien t'aider. :) 
Quel est le problème ?

Attention, nous ne devons pas être nombreux à disposer de CATIA.
Donc attends toi à tes propositions assez évasives...

J'ai trouvé dans l'aide de Catia V5 un fichier Excel qui permet de rentrer des coordonnées de points (colonne A pour X, colonne B pour Y, colonne C pour Z) dans un tableau pré-définis d'excel et en cliquant sur un bouton sur la feuille excel les points se créés automatiquement dans une Part de Catia.
Le programme VBA se trouve donc dans ma feuille Excel.
Je souhaiterais créer une application avec l'éditeur VBA de Catia V5 qui me permette de spécifier un chemin à l'aide d'un bouton "parcourir" (j'aurai au préalable à partir d'une feuille excel vierge,rentré des coordonnées dans les colonnes A B et C ) puis de cliquer sur un bouton de type "valider" qui permettra d'executer le programme et donc de placer automatiquement mes points sur la Part. Mon programme se trouvera donc dans mon application que j'ai creer en VBA sur Catia V5.

Donc j'aimerais savoir si c'est possible et comment proceder.
J'espère avoir été le plus clair possible, si vous avez des questions n'hesitez pas.
merci,
Expert Programmation

Oui. Je suis sûr que c'est possible.
Mais je n'ai pas Catia pour me le prouver avant de te le dire. :( 

Ne peux-tu pas t'inspirer de ce qui est déjà fait dans Excel pour faire la partie EXECUTION.

Pour ce qui est d'ouvrir une boîte de dialogue, c'est la méthode GetOpenFilename de l'objet Application. Cette méthode ne fait que renvoyer un nom de fichier, ça n'ouvre pas le fichier.

J'ai crée l'interface, je clique sur "parcourir", la boite de dialogue s'ouvre, le chemin spécifié se met dans une listbox et je reprends le chemin de la listbox pour ouvrir un fichier excel. Donc pas de soucis de ce coté là.
Ce qui me pose problème maintenant c'est de reprendre le programme VBA d'excel (qui etait dans l'aide de Catia) et de l'inserer dans mon application VBA. Je ne sais pas comment faire, je ne sais pas si il ne vaut mieux pas repartir de zéro.
Tu as l'air de me dire que c'est possible mais je ne sais pas comment proceder.
En tout cas merci pour ton aide,

Pour quelqu'un comme moi qui ne connait pas beaucoup le VBA, oui.
A la base elle construisait des points, puis par ces points des curves puis par ces curves des surfaces complexes.
J'ai supprimer de cette macro les curves et les surfaces pour ne garder que ce qui m'intéresse les points.
Il y a certaines des fonctions inutiles dedans que je n'ai pas supprimé.
merci pour ton aide,

Bonjour,
Voilà à quoi ressemble le programme qui était dans l'aide de CATIA que j'ai modifié pour n'avoir que des points, je souhaite donc l'intégrer dans mon programme VBA que je développe avec l''éditeur VBA de CATIA, et non plus qu'il soit dans Excel comme actuellement:

  1. ============================================================================
  2. '// Generative Shape Design
  3. '// point, splines, loft generation tool
  4. '//============================================================================
  5. Const Cst_iSTARTCurve As Integer = 1
  6. Const Cst_iENDCurve As Integer = 11
  7. Const Cst_iSTARTLoft As Integer = 2
  8. Const Cst_iENDLoft As Integer = 22
  9. Const Cst_iSTARTCoord As Integer = 3
  10. Const Cst_iENDCoord As Integer = 33
  11. Const Cst_iERRORCool As Integer = 99
  12. Const Cst_iEND As Integer = 9999
  13.  
  14. Const Cst_strSTARTLoft As String = "Saisie des coordonnées PSE"
  15. Const Cst_strENDLoft As String = "EndMulti-SectionsSurface"
  16. Const Cst_strEND As String = "Fin"
  17.  
  18. '------------------------------------------------------------------------
  19. 'To define the kind of elements to create (1: create only points
  20. '2: creates points and splines
  21. '3: Creates points, splines and loft
  22. '------------------------------------------------------------------------
  23. Function GetTypeFile() As Integer
  24. Dim strInput As String, strMsg As String
  25. choice = 1
  26. GetTypeFile = choice
  27. End Function
  28.  
  29. '------------------------------------------------------------------------
  30. 'Get the active cell
  31. '------------------------------------------------------------------------
  32. Function GetCell(iindex As Integer, column As Integer) As String
  33. Dim Chain As String
  34.  
  35. Sheets("Feuil1").Select
  36. If (column = 1) Then
  37. Chain = "A" + CStr(iindex)
  38. ElseIf (column = 2) Then
  39. Chain = "B" + CStr(iindex)
  40. ElseIf (column = 3) Then
  41. Chain = "C" + CStr(iindex)
  42. End If
  43. Range(Chain).Select
  44. GetCell = ActiveCell.Value
  45. End Function
  46. Function GetCellA(iRang As Integer) As String
  47. GetCellA = GetCell(iRang, 1)
  48. End Function
  49. Function GetCellB(iRang As Integer) As String
  50. GetCellB = GetCell(iRang, 2)
  51. End Function
  52. Function GetCellC(iRang As Integer) As String
  53. GetCellC = GetCell(iRang, 3)
  54. End Function
  55. '------------------------------------------------------------------------
  56. 'Syntax of the parameter file
  57. '------------------------
  58. 'StartCurve -> to start the list of points defining the spline
  59. ' double , double , double
  60. ' double , double , double -> as many points as necessary to define the spline
  61. 'EndCurve -> to end the list of points defining the spline
  62. '
  63. '
  64. 'Example:
  65. '--------
  66. 'StartCurve
  67. ' -10.89, 10 , 46.78
  68. '1.56, 4, 6
  69. 'EndCurve -> spline composed of 2 points
  70. '------------------------------------------------------------------------
  71. Sub ChainAnalysis(ByRef iRang As Integer, ByRef X As Double, ByRef Y As Double, ByRef Z As Double, ByRef iValid As Integer)
  72. Dim Chain As String
  73. Dim Chain2 As String
  74. Dim Chain3 As String
  75.  
  76. Chain = GetCellA(iRang)
  77.  
  78. Select Case Chain
  79. Case Cst_strSTARTCurve
  80. iValid = Cst_iSTARTCurve
  81. Case Cst_strENDCurve
  82. iValid = Cst_iENDCurve
  83. Case Cst_strSTARTLoft
  84. iValid = Cst_iSTARTLoft
  85. Case Cst_strENDLoft
  86. iValid = Cst_iENDLoft
  87. Case Cst_strSTARTCoord
  88. iValid = Cst_iSTARTCoord
  89. Case Cst_strENDCoord
  90. iValid = Cst_iENDCoord
  91. Case Cst_strEND
  92. iValid = Cst_iEND
  93. Case Else
  94. iValid = 0
  95. End Select
  96. If (iValid <> 0) Then
  97. Exit Sub
  98. End If
  99.  
  100.  
  101.  
  102. 'Conversion string -> double
  103. Chain2 = GetCellB(iRang)
  104. Chain3 = GetCellC(iRang)
  105. If ((Len(Chain) > 0) And (Len(Chain2) > 0) And (Len(Chain3) > 0)) Then
  106. X = CDbl(Chain)
  107. Y = CDbl(Chain2)
  108. Z = CDbl(Chain3)
  109. Else
  110. iValid = Cst_iERRORCool
  111. X = 0#
  112. Y = 0#
  113. Z = 0#
  114. End If
  115. End Sub
  116. '------------------------------------------------------------------------
  117. ' Get CATIA Application
  118. '------------------------------------------------------------------------
  119. 'Remark:
  120. ' When KO, update CATIA registers with:
  121. ' CNEXT /unregserver
  122. ' CNEXT /regserver
  123. '-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  124. Function GetCATIA() As Object
  125. Set CATIA = GetObject(, "CATIA.Application")
  126. If CATIA Is Nothing Then
  127. Set CATIA = CreateObject("CATIA.Application")
  128. CATIA.Visible = True
  129. End If
  130.  
  131. Set GetCATIA = CATIA
  132. End Function
  133. '------------------------------------------------------------------------
  134. ' Get CATIADocument
  135. '------------------------------------------------------------------------
  136. Function GetCATIAPartDocument() As Object
  137. Set CATIA = GetCATIA
  138.  
  139. Dim MyPartDocument As Object
  140. Set MyPartDocument = CATIA.ActiveDocument
  141. If MyPartDocument Is Nothing Then
  142. MsgBox "No Catia Active Document found "
  143. End If
  144. Set GetCATIAPartDocument = MyPartDocument
  145. End Function
  146. '------------------------------------------------------------------------
  147. ' Creates all usable points from the parameter file
  148. '------------------------------------------------------------------------
  149. Sub CreationPoint()
  150.  
  151. 'Get CATIA
  152. Dim PtDoc As Object
  153. Set PtDoc = GetCATIAPartDocument
  154.  
  155. ' Get the HybridBody
  156. Dim myHBody As Object
  157. Set myHBody = PtDoc.Part.HybridBodies.Item("PSE")
  158.  
  159. Dim iLigne As Integer
  160. Dim iValid As Integer
  161. Dim X As Double
  162. Dim Y As Double
  163. Dim Z As Double
  164. Dim Point As Object
  165.  
  166. iLigne = 1
  167. 'Analyze file
  168. While iValid <> Cst_iEND
  169. 'Read a line
  170. ChainAnalysis iLigne, X, Y, Z, iValid
  171. iLigne = iLigne + 1
  172.  
  173. 'Not on a startcurve or endcurve -> valid point
  174. If (iValid = 0) Then
  175. Set Point = PtDoc.Part.HybridShapeFactory.AddNewPointCoord(X, Y, Z)
  176. myHBody.AppendHybridShape Point
  177. End If
  178. Wend
  179.  
  180. 'Model update
  181. PtDoc.Part.Update
  182. End Sub
  183.  
  184. '------------------------------------------------------------------------
  185. 'Main program
  186. '------------------------------------------------------------------------
  187. Sub Main()
  188.  
  189. 'Get the type of operations to do:
  190. ' Points --> 1
  191. ' Splines + Points --> 2
  192. ' Loft + Splines + Points --> 3
  193.  
  194.  
  195. Dim TypeFile As Integer
  196. TypeFile = GetTypeFile
  197.  
  198. ' V5R12 - Create dedicate openBody for created geometry
  199. ' Get CATIA Active Document
  200. ' Warning: Active document has to be a Part Document
  201. Dim PtDoc As Object
  202. Set PtDoc = GetCATIAPartDocument
  203.  
  204. ' Dim myHBody As HybridBody
  205. Set myHBody = PtDoc.Part.HybridBodies.Add()
  206. Set referencebody = PtDoc.Part.CreateReferenceFromObject(myHBody)
  207. PtDoc.Part.HybridShapeFactory.ChangeFeatureName referencebody, "PSE"
  208.  
  209. TypeFile = 1
  210. CreationPoint
  211. End
  212.  
  213.  
  214. End Sub


(Je pense qu'il reste des choses inutiles dedans)
Lassé par la pub ? Créez un compte