Seznam příspěvků uživatele
V tabulce jsou všechny příspěvky uživatele Ivan Kaněv (Kanev) řazené podle témat. Kliknutím na název
téma se zobrazíte celou diskusi.
Téma | Založeno | Odpověď |
Clash detection v rámci Part Designu |
24.3. 2017 |
Dobrý den,
nakonec jsem problém vyřešil pomocí makra (viz níže).
Makro vytvoří nový produkt a vloží každé body jako nový Part s Linkem, takže je pak možno v rámci sestavy kontrolovat kolize atd.
Makro nevytváří zvlášť Party pro Body použitá v Booleanských operacích.
Funguje pro V5R19
Language = "VBSCRIPT"
Dim KomponenteNeu As Products
Dim KoerperName
Dim OpenKoerperName
Dim hybridBodies As document
Dim Koerper As Object
Dim QuellFenster As Window
Dim Letztekoerper
Dim UserSel As selection
Sub CATMain()
Dim Activdocu As document
Set Activdocu = CATIA.ActiveDocument
Dim PosString As Long
partName = CATIA.ActiveDocument.Name
Dim docu As Documents
Set docu = CATIA.Documents
Dim productDocu As document
Set productDocu = docu.Add("Product")
Dim ProductNeu As product
Set ProductNeu = productDocu.product
PosString = InStr(1, partName, ".CATPart")
ProductNeu.PartNumber = Mid(partName, 1, PosString - 1)
FensterNebeneinander
Set QuellFenster = CATIA.Windows.Item(1)
QuellFenster.Activate
Dim partBodies As Bodies
Set partBodies = Activdocu.Part.Bodies
Dim koerperAnzahl
koerperAnzahl = partBodies.Count
Dim UserSel As Object
Dim PartNeu As product
Dim workPart As PartDocument
For I = 1 To koerperAnzahl
Set Koerper = partBodies.Item(I)
If Koerper.InBooleanOperation = False Then
KoerperName = Koerper.Name
If Right(KoerperName, 1) = "\" Then
KoerperName = Left(KoerperName, Len(KoerperName) - 1)
End If
KoerperName = Replace(KoerperName, "\", "_")
Activdocu.selection.Clear
Activdocu.selection.Add Koerper
Activdocu.selection.Copy
Activdocu.selection.Clear
On Error Resume Next
Set PartNeu = ProductNeu.Products.AddNewComponent("Part", CStr(KoerperName))
If Err.Number <> 0 Then
On Error GoTo 0
l = ProductNeu.Products.Count
Set PartNeu = ProductNeu.Products.Item(l)
KoerperName = KoerperName & "." & I
PartNeu.PartNumber = KoerperName
ProductNeu.Products.Item(l).Name = KoerperName & ".1"
Else
On Error GoTo 0
End If
ProductNeu.Parent.Activate
PartSuchen ProductNeu.Parent, UserSel
ProductNeu.Parent.selection.Clear
ProductNeu.Parent.selection.Add ProductNeu.Products.Item(PartNeu).ReferenceProduct.Parent.Part
ProductNeu.Parent.selection.PasteSpecial "CATPrtResult"
ProductNeu.Parent.selection.Clear
Set workPart = ProductNeu.Products.Item(PartNeu).ReferenceProduct.Parent
If workPart.Part.Bodies.Count > 1 Then
workPart.Part.MainBody = workPart.Part.Bodies.Item(workPart.Part.Bodies.Count)
ProductNeu.Parent.selection.Add workPart.Part.Bodies.Item(1)
ProductNeu.Parent.selection.Delete
ProductNeu.Parent.selection.Clear
End If
End if
Next
ProductNeu.ApplyWorkMode DESIGN_MODE
On Error Resume Next
ProductNeu.Update
If Err <> 0 Then
MsgBox "Problem with update!" & vbLf & vbLf & "Please update manual!", vbCritical + vbOKOnly, "Update-Error"
End If
On Error GoTo 0
End Sub
Sub PartSuchen(oPartDoc1, UserSel)
Dim E As Object Dim Was(0)
Was(0) = "Part"
Set UserSel = oPartDoc1.selection
UserSel.Clear
UserSel.Search ("CATPrtSearch.PartFeature,all")
End Sub
Sub FensterNebeneinander()
Dim windows1 As Windows
Set windows1 = CATIA.Windows
windows1.Arrange catArrangeTiledVertical
End Sub
|