我已经在宏编辑器内置的 Catia V5 中编写了一些宏,但我不知道如何从 Excel 访问 Catia 命令。
我想知道如何通过仅在 excel 文件圆柱体的半径和长度中创建一个简单的直圆柱体。
我想在 Catia 中制作不同的压力容器,方法是在 Excel 中输入它们的直径和高度,然后单击该 Excel 表中的按钮后,容器应该出现在 Catia 中。如果我已经需要在 Catia 中打开一个空的部分,我没有问题,但最好只打开 Catia,其中没有加载任何内容。
如果我有开始,看看如何从 Excel 访问 Catia 方法,我想我可以找出完成容器所需的其余方法,如颈部、帽等。
谢谢你。
编辑:我设法测试了一些东西,我遇到了一个问题,我不知道如何在 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 命令链接到 excel vb。
这是来自 v5 自动化文档:
枚举 CatConstraintMode { catCstModeDrivingDimension, catCstModeDrivenDimension }
也感谢对我的代码的任何反馈。
谢谢你。
编辑:我似乎被允许导入的唯一参考是这些: 参考
如果我选择其他人,我会收到错误:加载 DLL 时出错。Catia 安装在服务器上,但我可以使用浏览指向它...我仍然不确定在那里选择什么,因为有很多文件。