Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Abstandmessung zwischen Bodies

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Abstandmessung zwischen Bodies (528 mal gelesen)
Steefle
Mitglied



Sehen Sie sich das Profil von Steefle an!   Senden Sie eine Private Message an Steefle  Schreiben Sie einen Gästebucheintrag für Steefle

Beiträge: 21
Registriert: 09.11.2005

erstellt am: 14. Jun. 2006 08:21    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo zusammen!
Da ich mich noch nicht allzu lange mit der Makroprogrammierung beschäftige tauchen hier und da kleine Hürden auf.
Die mit der ich mich momentan beschäftige ist die Abstandsmessung zwischen zwei Bodies. "Von Hand" ist dies problemlos möglich, mit einem Makro scheint es schwieriger zu sein...
Habe versucht es mit measurable aus der SPAWorkbench umzusetzen, was aber nur zum Abstand Null geführt hat. Eine Messung von Solids ist ohne weiteres möglich, ich möchte aber die ganzen Bodies vermessen.
Könnte es sein, dass CreateReferenceFromObject nicht auf Bodies funktioniert???

Hier mein kleiner Versuch:
Sub CATMain()

Dim partDocument1 As Document
Set partDocument1 = CATIA.ActiveDocument

Dim part1 As Part
Set part1 = partDocument1.Part

Dim bodies1 As Bodies
Set bodies1 = part1.Bodies

Dim body1 As Body
Set body1 = bodies1.Item("Koerper_1")
Dim body2 As Body
Set body2 = bodies1.Item("Koerper_2")

Dim ref1 As reference
Set ref1 = part1.CreateReferenceFromObject(body1)

Dim ref2 As reference

Dim TheSPAWorkbench As Workbench
Set TheSPAWorkbench = CATIA.ActiveDocument.GetWorkbench("SPAWorkbench")

Dim TheMeasurable As Measurable
Set TheMeasurable = TheSPAWorkbench.GetMeasurable(ref1)
Dim Mini As Double

Set ref2 = part1.CreateReferenceFromObject(body2)

Mini = TheMeasurable.GetMinimumDistance(ref2)
MsgBox ("Abstand: " & Mini)

If Mini = 0 Then
MsgBox ("Koerper schneiden sich!")
End If

End Sub

Wäre schön, wenn jemand einen Tipp übrig hätte!
Schonmal Danke im Voraus!
Grüße aus dem Bergischen Land,
Lars

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Steefle
Mitglied



Sehen Sie sich das Profil von Steefle an!   Senden Sie eine Private Message an Steefle  Schreiben Sie einen Gästebucheintrag für Steefle

Beiträge: 21
Registriert: 09.11.2005

erstellt am: 16. Jun. 2006 09:46    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Guten Morgen!
Habe nun eine alternative Möglichkeit gefunden die Messung umzusetzen. Mittels Skript erstelle ich einen Parameter vom Typ length und weisen ihn über eine erstellte Formel das Ergebnis einer Abstandsmessung zu. Die zu vermessenden Bodies werden über eine Selektion ausgewählt und in einer Schleife der Messung zugefügt.
Hier ist die Abstandsmessung zwischen Bodies zwar möglich, allerdings nimmt das automatisierte Erstellen und Löschen der Parameter und Formeln in der Schleife eine gewisse Zeit in Anspruch. Wäre schön wenn´s schneller gehen würde...
Hier mein Skript:
Sub CATMain()

Dim partDocument1 As PartDocument
Set partDocument1 = CATIA.ActiveDocument

Dim part1 As Part
Set part1 = partDocument1.Part

Dim bodies1 As Bodies
Set bodies1 = part1.Bodies

Dim body1 As Body
Set body1 = bodies1.Item("Koerper_1")

Dim body2 As Body

Dim koerperselektion As Selection
Set koerperselektion = partDocument1.Selection
koerperselektion.Clear

Dim parameters1 As Parameters
Set parameters1 = part1.Parameters

Dim relations1 As Relations
Set relations1 = part1.Relations

Dim length1 As Length

Dim Messformel As Formula

koerperselektion.Search "(CATPrtSearch.BodyFeature),all"

For I = 1 To koerperselektion.Count
Set body2 = koerperselektion.Item(I).Value
On Error Resume Next
    If body2.InBooleanOperation = False Then
    Set length1 = parameters1.CreateDimension("Messung" & I, "LENGTH", 0)
    Set Messformel = relations1.CreateFormula("computedistance" & I, "Berechnet den Abstand zwischen Körpern", length1, "distance(" & body1.Name & " ," & body2.Name & " )")

            If length1.Value = 0 Then
            MsgBox ("Koerper_1 geschnitten von " & Koerper(I).Name)
            End If
    parameters1.Remove ("Messung" & I)
    End If
Next

part1.Update

End Sub

[Diese Nachricht wurde von Steefle am 16. Jun. 2006 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz