我已经在用宏编辑器构建的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}
此外,对我的代码的任何反馈表示赞赏 .
谢谢 .
编辑:我似乎可以导入的唯一引用是:references
如果我选择其他人,则会收到错误:加载DLL时出错 . Catia安装在服务器上但是我可以使用Browse指向它...我仍然不确定在那里选择什么,因为有很多文件 .