2016-11-16 155 views
0

我在VBA中有一个CATIA宏,它通过坐标(从数组中)绘制点。 它适用于我的电脑(Catia V5-R2014和我的neigbours - 两个版本V5-R2014和R21)。 但它不适用于不同城市的大学(他们的版本为R21)。 基本上,我的宏从文件读取输入数据,计算坐标,将它们写入out-file,然后绘制这些点。 除最后一个步骤之外的所有步骤均可在任一计算机/版本上运行。 但在最后一步“他们的”卡蒂亚只是不绘制任何东西,没有任何错误。用于CATIA的VBA宏在一台计算机上工作,并且在另一台计算机上不工作

所以对于最后一步Subruotine是:

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 

什么可以吗?

回答

1

也许在您的网站上启用了混合设计,而在其他网站上则没有。

启用混合设计后,您可以将点添加到实体。不是这样的,如果它没有启用,你会从你的代码没有错误。

该设置位于工具 - >选项 - >基础设施 - >零件基础结构 - >零件文档选项卡 - >在零件体和零件内启用混合设计。

由于无法解释的原因,启用混合设计是默认设置。不过,我不建议使用它。

如果你只是想让你的代码在两个地方都可以工作,那么使用几何集来聚合你的点而不是主体。

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 
+0

这是正确的。其他办公室的一位同事表示。我已经重写了宏,它的工作原理 – user3656916

0

只是一个随机猜测:

进入VBE>工具>参考

和两台计算机的值进行比较。它们应该是相同的。 比较这些复选框:

enter image description here

如果它们是不同的,请务必使它们等同于作品的PC。

相关问题