Clash detection v rámci Part Designu
Kompletní přehled příspěvků v tématu Clash detection v rámci Part Designu řazený podle data jejich publikace na fóru.
Uživatel | Příspěvek |
Ivan Kaněv
Poslat zprávu |
Profil
|
Datum:
21.2. 2017
| Zobrazeno:
8218xKonfigurace CATIA: V5R19Text dotazu: Dobrý den,
je nějaká možnost jak zjistit případné kolize mezi jednotlivými Body v rámci Part Designu, aniž by musel člověk každé Body vkládat do zvláštního Partu? |
|
Ing Jan Cinert
Poslat zprávu |
Profil
|
[#6133]
| Publikováno:
21.02. 2017 - 14:20 Dobrý den,
žádná speciálně k tomu určená funkce neexistuje. Jediné co mě napadá, jak rychle zjistit, zda jsou tělesa v kolizi, je změřit jejich vzdálenost. Když bude vycházet 0mm, jsou buď v kontaktu nebo v kolizi.
Další možnost je vytvořit si ze sledovaných Body kopie s linkem a pak je nechat booleovsky proniknout (viz obrázek). Účel to splní lépe, ale je to pracnější. Navíc když k průniku nedojde, funkce Intersect hlásí chybu.
Přiložené obrázky:
|
Ivan Kaněv
Poslat zprávu |
Profil
|
[#6174]
| Publikováno:
24.03. 2017 - 09:14Dobrý 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
|
Uživatel nepřihlášen
Pro zobrazení obsahu stránky / provedení akce (vytvoření nového téma, napsání odpovědi do diskuse apod.)
musíte být přihlášeni.