- Код: Выделить всё
Dim ProdClashes As SPATypeLib.Clashes
Dim ProdClash As SPATypeLib.Clash
Dim cGroups As NavigatorTypeLib.Groups
Dim group1 As NavigatorTypeLib.Group
Dim group2 As NavigatorTypeLib.Group
Dim i As Long
Dim n as Long
Dim QPos(11)
' .....
' заполнение QPos(11) начальными значениями
' .....
n = 1
Set ProdClashes = Prod.GetTechnologicalObject("Clashes")
Set ProdClash = ProdClashes.Add
ProdClash.ComputationType = catClashComputationTypeBetweenTwo
ProdClash.InterferenceType = catClashInterferenceTypeContact
Set cGroups = Prod.GetTechnologicalObject("Groups")
Set group1 = cGroups.Add
Set group2 = cGroups.Add
group1.AddExplicit SurfaceProd ' поверхность
ProdClash.FirstGroup = group1
RootProducts.AddComponentsFromFiles QuadFile, "All"
Set QuadProd = RootProducts.Item(n) ' параллелепипед
group2.AddExplicit QuadProd
ProdClash.SecondGroup = group2
For i = 1 To 10000
QuadProd.Position.SetComponents QPos
ProdClash.Compute ' после пересчёта CATIA выделяет оперативную память
' .....
' проверяются условия, изменяется координата QPos
' новые объекты в цикле не создаются
' .....
Next i