VBA CATIA 宏在一台计算机上有效,在另一台计算机上无效
VBA macros for CATIA works on one computer, and doesn't work on another
我在 VBA 中有一个 CATIA 宏,它通过坐标(从数组)绘制点。
它适用于我的电脑(Catia V5-R2014 和我的邻居 - 两个版本 V5-R2014 和 R21)。
但它不适用于不同城市的大学(他们有 R21 版本)。
基本上,我的宏从文件中读取输入数据,计算坐标,将它们写入输出文件,然后绘制这些点。
除最后一个步骤外,所有步骤都适用于 computer/version。
但是在最后一步 "their" Catia 没有绘制任何东西,w/o 任何错误。
所以最后一步的子程序是:
Sub PlotGeometry()
' Nmlp - number of points
Dim i As Integer
Dim oPartDocument As Document
Dim ohSPointCoord() As HybridShapePointCoord
Dim ohSPoints As HybridShapePointCoord
Dim bodies1 As Bodies
Dim body1 As Body
ReDim ohSPointCoord(0 To Nmlp)
Set oPartDocument = CATIA.Documents.Add("Part")
Set oPart = oPartDocument.Part
Set oPartBody = oPart.MainBody
Set oPlaneYZ = oPart.CreateReferenceFromGeometry(oPart.OriginElements.PlaneYZ)
' -- Draw Points
Dim ohSFactory As HybridShapeFactory
Set ohSFactory = oPart.HybridShapeFactory
For i = 0 To Nmlp
Set ohSPointCoord(i) = ohSFactory.AddNewPointCoord(XM(i), YM(i), ZM(i))
oPartBody.InsertHybridShape ohSPointCoord(i)
Next i
oPart.Update
End Sub
它可以是什么?
随便猜一下:
转到 VBE>工具>参考
并比较两台计算机的值。它们应该是相同的。
比较这些复选框:
如果它们不同,请确保它们与正常运行的 PC 相同。
也许您的站点启用了混合设计,而在其他站点则没有。
启用混合设计后,您将能够向 Body 添加点。如果未启用它,则不是这样,并且您的代码不会出错。
设置在Tools->Options->Infrastructure->Part Infrastructure->Part Document Tab->Enable hybrid design inside part bodies and bodys。
由于无法解释的原因,默认启用混合设计。但是我不推荐使用它。
如果您只是想让您的代码在两个地方都有效,那么请使用几何集来聚合您的点而不是主体。
Dim pointsBody as HybridBody
Set pointsBody = oPart.HybridBodies.Add
pointsBody.Name = "Points_Body"
...
For i = 0 To Nmlp
Set ohSPointCoord(i) = ohSFactory.AddNewPointCoord(XM(i), YM(i), ZM(i))
pointsBody.AppendHybridShape ohSPointCoord(i)
Next i
我在 VBA 中有一个 CATIA 宏,它通过坐标(从数组)绘制点。 它适用于我的电脑(Catia V5-R2014 和我的邻居 - 两个版本 V5-R2014 和 R21)。 但它不适用于不同城市的大学(他们有 R21 版本)。 基本上,我的宏从文件中读取输入数据,计算坐标,将它们写入输出文件,然后绘制这些点。 除最后一个步骤外,所有步骤都适用于 computer/version。 但是在最后一步 "their" Catia 没有绘制任何东西,w/o 任何错误。
所以最后一步的子程序是:
Sub PlotGeometry()
' Nmlp - number of points
Dim i As Integer
Dim oPartDocument As Document
Dim ohSPointCoord() As HybridShapePointCoord
Dim ohSPoints As HybridShapePointCoord
Dim bodies1 As Bodies
Dim body1 As Body
ReDim ohSPointCoord(0 To Nmlp)
Set oPartDocument = CATIA.Documents.Add("Part")
Set oPart = oPartDocument.Part
Set oPartBody = oPart.MainBody
Set oPlaneYZ = oPart.CreateReferenceFromGeometry(oPart.OriginElements.PlaneYZ)
' -- Draw Points
Dim ohSFactory As HybridShapeFactory
Set ohSFactory = oPart.HybridShapeFactory
For i = 0 To Nmlp
Set ohSPointCoord(i) = ohSFactory.AddNewPointCoord(XM(i), YM(i), ZM(i))
oPartBody.InsertHybridShape ohSPointCoord(i)
Next i
oPart.Update
End Sub
它可以是什么?
随便猜一下:
转到 VBE>工具>参考
并比较两台计算机的值。它们应该是相同的。 比较这些复选框:
如果它们不同,请确保它们与正常运行的 PC 相同。
也许您的站点启用了混合设计,而在其他站点则没有。
启用混合设计后,您将能够向 Body 添加点。如果未启用它,则不是这样,并且您的代码不会出错。
设置在Tools->Options->Infrastructure->Part Infrastructure->Part Document Tab->Enable hybrid design inside part bodies and bodys。
由于无法解释的原因,默认启用混合设计。但是我不推荐使用它。
如果您只是想让您的代码在两个地方都有效,那么请使用几何集来聚合您的点而不是主体。
Dim pointsBody as HybridBody
Set pointsBody = oPart.HybridBodies.Add
pointsBody.Name = "Points_Body"
...
For i = 0 To Nmlp
Set ohSPointCoord(i) = ohSFactory.AddNewPointCoord(XM(i), YM(i), ZM(i))
pointsBody.AppendHybridShape ohSPointCoord(i)
Next i