Я уже написал несколько макросов в Catia V5, встроенных в редактор макросов, но я не могу понять, как получить доступ к командам Catia из Excel.Создайте деталь в Catia, нажав кнопку Excel
Я хотел бы знать, как я могу создать, например, простой прямой цилиндр, только имея в радиусе и длине цилиндра Excel.
Я хочу сделать различные сосуды под давлением в Катие, введя их диаметр и высоту в Excel и после нажатия на кнопку на этом листе превосходного сосуда должен появиться в Catia. У меня нет проблем, если мне уже нужно иметь открытую пустую часть в Catia, но было бы лучше всего, чтобы Catia Opened ничего не загрузил в нее.
Если у меня есть начало и посмотреть, как я могу получить доступ к Catia Методы из Excel Я думаю, что я могу понять, методы отдыха, необходимые для завершения судна, как шея, шапка и т.д.
Спасибо.
Редактировать: Мне удалось проверить некоторые вещи, я застрял в одной проблеме, я не знаю, как настроить ограничения в Excel vba. Я переместил код из Catia vb в Visual Express и смог заставить его работать там, но в excel я не нашел ссылку о том, как использовать измерение вождения.
Вот мой код:
Sub Main()
Dim CATIA As Object
Set CATIA = GetObject(, "CATIA.Application")
Set openDocument = CATIA.ActiveDocument
Set currentPart = openDocument.Part
Set currentHybridBodies = currentPart.HybridBodies
Set currentHybridBody = currentHybridBodies.Add()
Set referenceHybridBody = currentPart.CreateReferenceFromObject(currentHybridBody)
currentPart.HybridShapeFactory.ChangeFeatureName referenceHybridBody, "GeometricalSet"
Set partOriginElements = currentPart.OriginElements
Set plnYZ = currentPart.OriginElements.PlaneYZ
Set currentGeometricalSet = currentPart.HybridShapeFactory
Dim currentOffset As Integer
Dim circleDiameter As Integer
Dim cylinderLength As Integer
currentOffset = 0
circleDiameter = Range("B2").Value
cylinderLength = Range("B3").Value
Call CreateCylinder(0, 0, circleDiameter, cylinderLength, currentOffset)
currentPart.Update
currentOffset = currentOffset + cylinderLength
circleDiameter = Range("B5").Value
cylinderLength = Range("B6").Value
Call CreateCylinder(0, 0, circleDiameter, cylinderLength, currentOffset)
openDocument.Part.Update
currentOffset = currentOffset + cylinderLength
circleDiameter = Range("B8").Value
cylinderLength = Range("B9").Value
Call CreateCylinder(0, 0, circleDiameter, cylinderLength, currentOffset)
currentPart.Update
currentOffset = currentOffset + cylinderLength
CATIA.ActiveWindow.ActiveViewer.Reframe
End Sub
Sub CreateCylinder(iCenterX, iCenterY, iDiameter, iLength, iPlaneOffset)
Set CATIA = GetObject(, "CATIA.Application")
Set openDocument = CATIA.ActiveDocument
Set currentPart = openDocument.Part
Set plnYZ = currentPart.OriginElements.PlaneYZ
Set currentGeometricalSet = currentPart.HybridShapeFactory
Set planeOffset1 = currentGeometricalSet.AddNewPlaneOffset(plnYZ, iPlaneOffset, False)
Set currentHybridBody = currentPart.HybridBodies.Item("GeometricalSet")
currentHybridBody.AppendHybridShape (planeOffset1)
openDocument.Part.Update
Set currentBodies = currentPart.Bodies
Set currentBody = currentBodies.Add()
Set currentSketch = currentBody.Sketches.Add(planeOffset1)
Dim Factory2D As Object
Set Factory2D = currentSketch.OpenEdition
Set geometricElements1 = currentSketch.GeometricElements
Dim axis2D1 As Object
Set axis2D1 = geometricElements1.Item("AbsoluteAxis")
Dim line2D1 As Object
Set line2D1 = axis2D1.GetItem("HDirection")
Dim line2D2 As Object
Set line2D2 = axis2D1.GetItem("VDirection")
Set currentCircle = Factory2D.CreateClosedCircle(iCenterX, iCenterY, iDiameter/2)
Dim point2D1 As Object
Set point2D1 = axis2D1.GetItem("Origin")
Dim constraints1 As Object
Set constraints1 = currentSketch.Constraints
Dim reference2 As Object
Set reference2 = currentPart.CreateReferenceFromObject(currentCircle)
Dim constraint1 As Object
Set constraint1 = constraints1.AddMonoEltCst(catCstTypeRadius, reference2)
Dim catCstModeDrivingDimensions As Object
'Set constraint1.Mode = catCstModeDrivingDimensions 'Here I get the error
Dim iRadius As Double
iRadius = iDiameter/2
currentCircle.CenterPoint = point2D1
currentSketch.CloseEdition
Dim newPad As Object
Set newPad = currentPart.ShapeFactory.AddNewPad(currentSketch, iLength)
End Sub
На этой комментировал линии я получаю сообщение об ошибке 438: Объект не поддерживает это свойство или метод.
Код работает без этой строки, но геометрические элементы не ограничены, вместо этого они кажутся фиксированными, и я не хочу этого.
Этот код отлично работает в Visual Express и устанавливает все ограничения, в которых они должны быть.
Может ли кто-нибудь сказать мне, как связать эту команду Catia с преимуществом vb.
Это из документации автоматизации v5:
перечисление CatConstraintMode { catCstModeDrivingDimension, catCstModeDrivenDimension }
Кроме того, любая обратная связь на мой код ценится.
спасибо.
Edit: Только ссылки я, кажется, предоставляемое импорта являются следующие: references
Если я выбираю другие я получаю сообщение об ошибке: Ошибка при загрузке DLL. Catia установлен на сервере, но я могу указать на него с помощью Browse ... все еще я не уверен, что выбрать там, потому что есть много файлов.
Вы должны добавить справочные библиотеки CATIA. См. Http://catiav5automation.blogspot.com/2013/05/introduction-to-catia-v5-automation.html около половины страницы (пункт 2b) – OpiesDad
Благодарим вас за ответ, у вас интересный блог, так плохо что он не отображается в поиске Google. –
Это не мой блог; Я нашел его в поиске Google ... Я даже не знаю, что такое CATIA, чтобы быть честным. – OpiesDad