Hot News aus dem CAD.de-Newsletter:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Bounding Box (Länge, Breite, Höhe)

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:   Bounding Box (Länge, Breite, Höhe) (16435 mal gelesen)
Gepetto
Mitglied
Diplomand auf Arbeitssuche


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

Beiträge: 32
Registriert: 04.03.2009

erstellt am: 20. Apr. 2009 12:57    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


measure_inertia.jpg


pa.txt

 
Hallo Zusammen,

Ich muss mit einem Makro die Rohteilabmaße bestimmen. Dabei bin ich auf die Funktion Measure Inertia gestoßen. Ich habe aber noch nicht wirklich herausgefunden wie ich aus dieser die BoundingBox auslesen kann. Wenn man sich die "pricipalaxes" ausgeben lässt, gibt er leider nur die üblichen 9 Parameter aus.
Wenn ich aber dort nun die Funktion "Export" verwende oder einfach auf "keep measure" klicke. Dann sind die Parameter BBLx, BBLy und BBLz vorhanden. Bei "Export" schreibt Catia diese hinter die 9 "Pricipalaxes" in der txt.Datei und bei "keep measure" werden diese als Parameter in "InertiaVolume" unter "Applications" angelegt.

Also gibt es diese Parameter.

Über:
    Dim oInertia As Object
    Set oInertia = CATIA.ActiveDocument.Product.GetTechnologicalObject("Inertia")

    Dim dMass As Double
    dMass = oInertia.Mass  'Masse
    Dim coordinates(2)
    oInertia.GetCOGPosition coordinates  'Center of Gravity
    Dim Matrix(15)
    oInertia.GetInertiaMatrix Matrix    'Massenträgheit
    Dim Values(2)
    oInertia.GetPrincipalMoments Values  'Hauptmomente
    Dim Components(15)
    oInertia.GetPrincipalAxes Components  'Hauptachsen

lassen sich viele Informationen auslesen, aber an die BoundingBox komme ich so nicht!

Bitte helft mir mal! Ich muss doch irgendwie an die BoundingBox kommen können!

MfG Jan

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 10840
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 20. Apr. 2009 14:08    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 Nur für Gepetto 10 Unities + Antwort hilfreich

Servus
AFAIR gibt es schon ein Script dazu hier im Forum. Einfach mal suchen (zB nach Bounding Box)

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

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

Gepetto
Mitglied
Diplomand auf Arbeitssuche


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

Beiträge: 32
Registriert: 04.03.2009

erstellt am: 20. Apr. 2009 15:57    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

Ich hab das Script auch schon gefunden. Ich habe aber keinen Nutzen daraus ziehen können. Außerdem ist es nicht wirklich über die Funktion BoundingBox. Es wird ähnlich wie die Funktion, eine Box erstellt.

Ich würde aber gerne die Parameter aus der Funktion "Inertia" auslesen. Wie kann ich das machen?

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

zoltan.bekesi
Mitglied



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

Beiträge: 321
Registriert: 22.10.2006

Job:
CATIA V5R19 / XP 32bit
MS Office 2003
Microstation V8 2004 Edition
DELL Precision M6300

erstellt am: 20. Apr. 2009 18:55    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 Nur für Gepetto 10 Unities + Antwort hilfreich

Hallo Jan,

soweit ich weiß, gibt es in CATIA keine Möglichkeit den Boundingbox abzufragen.
Man muss es, mit Geometrieerzeugung ermitteln.
Die einzige Möglichkeit ohne Geometrie war es durch Schnitte (es gibt ein Beispiel dazu in der CATIA VBA Hilfe), da musst du aber die richtige Ebene für den Schnitt nehmen und es scheitert an diesen Punkt.
Vielleicht weiß kennt aber jemand was besseres.

Gruß,
Zoltan

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

denyo_1
Moderator



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

Beiträge: 2506
Registriert: 10.08.2005

HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3

erstellt am: 20. Apr. 2009 19:12    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 Nur für Gepetto 10 Unities + Antwort hilfreich

Hallo,

ich geb dir recht wir hatten das Thema schon ein paar mal und sind immer hängen geblieben weil es keine Methode gibt die Box abzufragen. D.H. entweder du machst es über das schon existierende Makro oder die machst es mit dem Schnitt (würde ich aber nicht machen weil es sehr fehleranfällig ist  )

------------------
MFG Daniel

Die KATJA ist halt doch nur ne zickige Französin

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

Gepetto
Mitglied
Diplomand auf Arbeitssuche


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

Beiträge: 32
Registriert: 04.03.2009

erstellt am: 21. Apr. 2009 09:47    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

Ich weiss es ist keine schöne Lösung, aber kann man nicht die Funktion "Measure Inertia" als solche aufrufen, dann den Haken bei "keep measure" setzen, "OK" klicken und dann die Parameter im Strukturbaum auslesen lassen?

Es wird wahrscheinlich ein wirwar von StartCommands und SendKeys. Aber würde das gehen und wenn ja kann jemand mal nen Ansatz schreiben?

MfG Jan

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

denyo_1
Moderator



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

Beiträge: 2506
Registriert: 10.08.2005

HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3

erstellt am: 21. Apr. 2009 10:50    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 Nur für Gepetto 10 Unities + Antwort hilfreich

Hallo,

das mit StartCommand fällt IMHO flach. Du wirst schon am zweiten Schritt verzweifel. Das Problem ist das du dem StartCommand Befehl kein Objekt übergeben kannst und somit brauchst du nach dem StartCommand erst mal einen Mausklick um ihm zu sagen wovon er überhaupt eine Trägheit messen soll.

------------------
MFG Daniel

Die KATJA ist halt doch nur ne zickige Französin

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

.det
Mitglied


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

Beiträge: 2
Registriert: 21.04.2009

erstellt am: 21. Apr. 2009 21:58    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 Nur für Gepetto 10 Unities + Antwort hilfreich

Hallo,
wenn man es schaffen würde, alle Vertexes eines Bodies auszulesen, könnte man auch überlegen die bounding box selbst zu berechnen. Eine Achsen-Orientierte Bounding Box ist dabei recht einfach zu berechnen (suche kleinstes und größtes x/y/z, berechne anschließend Zentrum und Größe aus diesen Werten) und wäre vermutlich auch laufzeittechnisch schnell genug.
mfg
.det

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

zoltan.bekesi
Mitglied



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

Beiträge: 321
Registriert: 22.10.2006

Job:
CATIA V5R19 / XP 32bit
MS Office 2003
Microstation V8 2004 Edition
DELL Precision M6300

erstellt am: 22. Apr. 2009 16:54    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 Nur für Gepetto 10 Unities + Antwort hilfreich

Hallo .det,

unter folgender Link findest du ein Algorithmus um sowas zu verwirklichen.
mit Selection.Search kannst du eine Abfrage für alle Vertices machen, von jeden Vertex die Koordinaten auslesen. Ich bin aber der Meinung, für einen Part ist die Methode mit Geometrieerzeugung bedeutend einfacher (und wahrscheinlich auch schneller, da selection.search bei komplexe Sachen auch nicht gerade der schnellste ist).
Algorithmus für Bounding Container in C++

Gruß,
Zoltan

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

Jens Hansen
Mitglied
Senior Consult


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

Beiträge: 1055
Registriert: 05.08.2000

Win7
CATIA V5 R19
VB.Net
C#

erstellt am: 22. Apr. 2009 17:12    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 Nur für Gepetto 10 Unities + Antwort hilfreich

Hallo,
in meinem Buch habe ich das Problem durch bestimmen der Extremwerte bzw. Erzeugen von Extremum gelöst. Wichtig dabei ist noch, dass die Schwerpunktachsen bestimmt werden, entlang denen dann die Messung der Abstände zwischen den jeweiligen Extremim gemacht wird.

SG

Jens Hansen

------------------
Inoffizielle CATIA-Hilfeseite
Private Seite
Xing
Kochbuch - CATIA V5 automatisieren

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

zoltan.bekesi
Mitglied



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

Beiträge: 321
Registriert: 22.10.2006

Job:
CATIA V5R19 / XP 32bit
MS Office 2003
Microstation V8 2004 Edition
DELL Precision M6300

erstellt am: 22. Apr. 2009 22:06    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 Nur für Gepetto 10 Unities + Antwort hilfreich

Hallo .get,

falls du die Geometrieerzeugung unbedingt vermeiden willst, ist anbei ein CodeTeil, was alle Vertices sucht und in eine Schleife Min/Max in den 3 Achsenrichtungen bestimmt. Ist ziemlich einfach und unglaublich langsam. Es ist auch nicht zu erwarten, dass solche Programme schneller laufen, da eine Suche nach den Punkten und eine Messung auf jeden Punkt angewendet werden muss (und diese Operationen sind von einen Makro aus nicht besonders schnell).
Die Vertexsuche lieferte bei mir allerdings auch ganz komische Ergebnisse. Ich empfehle dir nochmals diese Idee zu verwerfen. Wie Jens schon geschrieben hat, steht in sein Buch ja bereits die Lösung fertig drin.

Code:
Sub CATMain()

    Dim sStart As String
    sStart = Format(Now(), "HH:MM:SS")
    Dim adBoundingBoxCoordinates(5) As Double
    Dim adVertexCoordinates(2)
    Dim oSel As Selection
    Dim oActDoc As Document
    Dim i As Integer
    Dim oSelElement As SelectedElement
    Dim oSPAWorkbench As SPAWorkbench
    Dim oMeasurable    'As Measurable

    If CATIA.Documents.Count = 0 Then
        MsgBox ("No document!")
        Exit Sub
    End If
    Set oActDoc = CATIA.ActiveDocument
    Set oSel = oActDoc.Selection
    Set oSPAWorkbench = oActDoc.GetWorkbench("SPAWorkbench")
    oSel.Clear
    oSel.Search ("Topology.Vertex;all")

    If oSel.Count2 = 0 Then
        Exit Sub
    End If

    For i = 1 To oSel.Count2
        Set oSelElement = oSel.Item2(i)
        Set oMeasurable = oSPAWorkbench.GetMeasurable(oSelElement.Reference)
        If oMeasurable.GeometryName = CatMeasurablePoint Then
            oMeasurable.GetPoint adVertexCoordinates
            'hier müsste man ggf. in ein anderes Koordinatensystem umrechnen
    '        Debug.Print adVertexCoordinates(0), adVertexCoordinates(1), adVertexCoordinates(2)
            If i = 1 Then
                CheckForMinMax adVertexCoordinates, adBoundingBoxCoordinates, True
            Else
                CheckForMinMax adVertexCoordinates, adBoundingBoxCoordinates, False
            End If
        End If
    Next

    Debug.Print "X min max ", adBoundingBoxCoordinates(0), adBoundingBoxCoordinates(1)
    Debug.Print "Y min max ", adBoundingBoxCoordinates(2), adBoundingBoxCoordinates(3)
    Debug.Print "Z min max ", adBoundingBoxCoordinates(4), adBoundingBoxCoordinates(5)

    Debug.Print sStart, Format(Now(), "HH:MM:SS")

End Sub

Sub CheckForMinMax(ByRef adVertex, ByRef adMinMax, Init As Boolean)

    If Init Then
        adMinMax(0) = adVertex(0)
        adMinMax(1) = adVertex(0)
        adMinMax(2) = adVertex(1)
        adMinMax(3) = adVertex(1)
        adMinMax(4) = adVertex(2)
        adMinMax(5) = adVertex(2)
    Else
        adMinMax(0) = dMin(CDbl(adVertex(0)), CDbl(adMinMax(0)))
        adMinMax(1) = dMax(CDbl(adVertex(0)), CDbl(adMinMax(1)))
        adMinMax(2) = dMin(CDbl(adVertex(1)), CDbl(adMinMax(2)))
        adMinMax(3) = dMax(CDbl(adVertex(1)), CDbl(adMinMax(3)))
        adMinMax(4) = dMin(CDbl(adVertex(2)), CDbl(adMinMax(4)))
        adMinMax(5) = dMax(CDbl(adVertex(2)), CDbl(adMinMax(5)))
    End If

End Sub

Function dMin(dFirst As Double, dSecond As Double) As Double
    If dFirst < dSecond Then
        dMin = dFirst
    Else
        dMin = dSecond
    End If
End Function

Function dMax(dFirst As Double, dSecond As Double) As Double
    If dFirst > dSecond Then
        dMax = dFirst
    Else
        dMax = dSecond
    End If
End Function


Gruß,
Zoltan

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

Gepetto
Mitglied
Diplomand auf Arbeitssuche


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

Beiträge: 32
Registriert: 04.03.2009

erstellt am: 23. Apr. 2009 09:48    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 Zoltan,

dein Code ist sehr interessant. Ich hab nur eine Anmerkung:
Was ist wenn beispielsweise wie beim Reichstag eine Kuppel ganz oben ist? Ich habe einen Test gemacht und ein verrundetes Bauteil in positiv z-Richtung als weitentfernteste Geometrie. Dann sind dort keine Vertex-Punkte die mit dem Makro erfasst werden können!

Daher kann man nicht die exakte Dimension in Z erhalten. Vielleicht fällt dir noch was anderes ein!

@Jens Hansen:
In deinem Buch ist die Möglichkeit erklärt wie man es bei einem Partbody realisieren kann. Ich wollte aber eine Lösung für ein Produkt. Kann man die Erläuterungen aus deinem Buch auch darauf umändern? Ich hab leider nicht soviel Ahnung, dass ich das auf Anhieb überblicke!

MfG Jan

[Diese Nachricht wurde von Gepetto am 23. Apr. 2009 editiert.]

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

Jens Hansen
Mitglied
Senior Consult


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

Beiträge: 1055
Registriert: 05.08.2000

Win7
CATIA V5 R19
VB.Net
C#

erstellt am: 23. Apr. 2009 11:57    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 Nur für Gepetto 10 Unities + Antwort hilfreich

Hallo Jan,
du kannst den Umweg gehen und aus deinem Product ein einzelnes Part machen (Product to Part). Dieses Part würde ich dann für die Messung benutzen. Je nachdem wie die einzelnen Parts aufgebaut sind, können ja die jeweiligen Finalbodies als verknüpfte Kopie in das "Messpart" eingefügt werden. Dann hätte man sogar alles noch parametrisch.

SG

Jens Hansen

------------------
Inoffizielle CATIA-Hilfeseite
Private Seite
Xing
Kochbuch - CATIA V5 automatisieren

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

Gepetto
Mitglied
Diplomand auf Arbeitssuche


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

Beiträge: 32
Registriert: 04.03.2009

erstellt am: 23. Apr. 2009 13:11    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 Jens,

leider habe ich Produkte mit teilweise 100 Einzelteilen. Ich will nicht 2min auf mein Makro warten. Daher fällt "generate CATPart from Product" raus!

Hast Du evtl. eine andere Funktion, im Kopf mit der es schneller geht? Ich würde ja am liebsten eine Messung mit dem Produkt realisieren, aber nach ersten Recherchen geht das wahrscheinlich auch nicht!

Bitte postet weitere Lösungsansätze!

MfG Jan

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 10840
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 23. Apr. 2009 13:20    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 Nur für Gepetto 10 Unities + Antwort hilfreich

Servus
Gibt es da nicht in der DMU-Umgebung (weiß nicht welcher Teil) ein Funktion dafür?
Ist nur die Frage, ob sich für die Messung diese Lizenz rechnet.

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

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

tomtom1972
Mitglied
dipl ing maschinenbau


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

Beiträge: 601
Registriert: 22.03.2005

NVidia Quadro K4000
Intel Xeon 3,7GHz 32GB RAM
Windows7 64bit
R26 <= CATIA V5 > =R19

erstellt am: 23. Apr. 2009 13:57    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 Nur für Gepetto 10 Unities + Antwort hilfreich


Bild_MTM.jpg

 
Hallo Gepetto,

folgendes funktioniert gut und sogar relativ schnell:
- du fängst an wie ursprünglich geplant und erzeugst dir über das TechnologicalObject "Inertia" die Hauptträgheitsachsen (GetPrincipalAxes)
- du erzeugst ein neues Part, dessen AbsolutesAchsenSystem kongruent zu dem o.g. Hauptträgheitsachsen ist
- du erzeugt eine hohlen Quader (d.h. eine Hüllkurve), der zu Beginn (in allen Richtungen) mittig zu dem Achsensytem ist. (Entwerder während der Laufzeit per Script oder du verbaust eine fertige Vorlage)
- die Abstände der 6 Seiten (L1 bis L6) des Quaders lassen sich über einen Parameter steuern
- der Quader ist zu Beginn hinreichend groß (also auf jeden Fall größer als die anderen Modelle
- in einer Schleife Clash-Unetrsuchungen ausführen (2 Selectionen gegeneinander, der Quader + der Rest)
- solange keine Kollision gefunden wird L1 bis L6 verringern
- beim ersten Clash stop
- CATIA gibt als Maß für die Größe der Kollison einen Abstand zurück (in mm) um den eins der beiden an der Kollision beteiligten Modelle verschoben werden muss, damit keine Kollision mehr auftritt.
- Um diesen Mass + ein bischen (0,1mm) L1 bis L6 vergrößern, sodass keine Kollision mehr auftritt
- dann L1 bis L6 einzeln auf die gleiche Weise nach und nach verringern
- das geht relativ schnell, d.h. die Kollisionsuntersuchungen die zu keinen Clash führen benötigen fast keine Zeit. Im Idealfall hast du 7 Clashes (manchmal ein paar mehr). Du kannst manuell testen, wie lange das bei deinen Modellen dauert
- Funktioniert auch im Cache-Modus (schneller)
- Aufgrund der Definition des Massenträgheitsmomentes an sich ist immer BBLz < BBLy < BBLX. Das zu wissen hilft bei der Veränderung der Masse L1 bis L6

Einens solltest du noch beachten:
bei der Berechung des Trägheitsmomentes (und damit der Ausrichtung des o.g. Achsenssytemes) werden alle Knoten im NoShow (Parts, Products etc) mitberechnet. D.h. es kann so was wie im Bild rauskommen (wenn das Volumen im NoShow sehr viel größer ist).
Die Boundig-Box ist dann zwar i.O. aber die Ausrichtung der Achsen entspricht nicht mehr den der Trägheitsmomente.

Gruß TomTom   

------------------
tomtom1972

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

Gepetto
Mitglied
Diplomand auf Arbeitssuche


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

Beiträge: 32
Registriert: 04.03.2009

erstellt am: 23. Apr. 2009 14:18    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

Der Ansatz gefällt mir! Hast Du evtl. schon so ein Makro programmiert und kannst mir hier den Quellcode zur Verfügung stellen?

Wir hatten bei uns im Haus auch schon überlegt über Clasdetection zu gehen, wobei wir damit rechnen dass es lange dauern kann... Aber das würde ich dann gerne ausprobieren!

MfG Jan

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

tomtom1972
Mitglied
dipl ing maschinenbau


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

Beiträge: 601
Registriert: 22.03.2005

NVidia Quadro K4000
Intel Xeon 3,7GHz 32GB RAM
Windows7 64bit
R26 <= CATIA V5 > =R19

erstellt am: 23. Apr. 2009 16:07    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 Nur für Gepetto 10 Unities + Antwort hilfreich

Hallo Gepetto,

ich kann dir helfen wenn du irgendwo nicht weiter kommst und spezielle Fragen hast.
Aber ein fertiges Script werde ich hier nicht posten. Damit verdiene ich (unter anderem) meine Brötchen.
Ich kann dir aber versichern das es so funktioniert wie oben beschrieben.

Gruß TomTom

------------------
tomtom1972

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

.det
Mitglied


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

Beiträge: 2
Registriert: 21.04.2009

erstellt am: 23. Apr. 2009 23:06    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 Nur für Gepetto 10 Unities + Antwort hilfreich

Hallo zoltan,
danke für Deinen interessanten code. Dass Makros, die die SPAWorkbench bemühen nicht besonders schnell sind, mußte ich leider an anderer Stelle feststellen. Stattdessen dachte ich daran, von den gefundenen Vertixes Referenzen zu erstellen, um diese dann auszulesen. also ungefähr folgendermaßen:

      oSelection.Search ("Topology.CGMVertex,sel")

For i = 1 to oSelection.Count
reftype = oSelection.Item(i).Type

Select Case reftype
Case "NotWireBoundaryMonoDimFeatVertex" Or "ZeroDimFeatVertexOrWireBoundaryMonoDimFeatVertex"
refname = ExtractBRepName(oSelection.Item(i).Value.Name)
Set ref4 = prt.CreateReferenceFromName(refname)
Set hybShapePointExplicit = hybShapeFactory.AddNewPointDatum(ref4)
hybShapePointExplicit.GetCoordinates(coord)
        Case "TriDimFeatVertexOrBiDimFeatVertex"

End Select

        Next


      Private Function ExtractBRepName(s As String) As String
          Dim i, i2, n    As Integer
          Dim tmp        As String

          tmp = Replace(s, "Selection_", "")
          tmp = Replace(tmp, "_ResultOUT", "")

  i = InStrRev(tmp, ";")
  i = InStrRev(tmp, ";", i - 1)
          i = InStrRev(tmp, ";", i - 1)

          tmp = Left(tmp, i)
          tmp = tmp & "WithPermanentBody;WithoutBuildError;WithSelectingFeatureSupport;MFBRepVersion_CXR14)"

          ExtractBRepName = tmp

      End Function

Im Array coord würden dann die Koordinaten gespeichert werden. Geometrieerzeugung möchte ich unbedingt vermeiden, da die Teile einem Freigabeprozess unterliegen. Ich hoffe, daß dieser Weg eine bessere Laufzeit aufweist, allerdings werden die Modelle durch diese Weise wohl auch als modifiziert gelten. Kann man diese Änderungen noch rückgängig machen ?

Gruß
.det

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

zoltan.bekesi
Mitglied



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

Beiträge: 321
Registriert: 22.10.2006

Job:
CATIA V5R19 / XP 32bit
MS Office 2003
Microstation V8 2004 Edition
DELL Precision M6300

erstellt am: 24. Apr. 2009 09:25    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 Nur für Gepetto 10 Unities + Antwort hilfreich

Hallo .det,

dein Code erzeugt auch Geometrie, obwohl es zu keinen Geometrical set hinzugefügt wird.
Soweit ich die bisherige Ideen und Möglichkeiten sehe, wirst du Geometrieerzeugung kaum umgehen können.
Mir persönlich gefällt die Idee von tomtom1972 am besten. Du kannst die Änderung bestehender Modelle evtl. umgehen, wenn die Modelle als Read-only geladen werden.
Zu dein Code: Die Spielerei mit den Brep-Texten brauchst du wahrscheinlich nicht. Reicht die oSelection.Item2(i).Reference nicht aus?
Beim Selection musst du Item2 und Count2 verwenden. Die anderen können problematisch funktionieren (auch laut Hilfe).

Gruß,
Zoltan

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

Gepetto
Mitglied
Diplomand auf Arbeitssuche


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

Beiträge: 32
Registriert: 04.03.2009

erstellt am: 30. Apr. 2009 11:59    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,
ich hab das Makro jetzt soweit fertig. Alles läuft und die Zeit ist auch noch okay!

Danke für eure Hilfe!

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

tomtom1972
Mitglied
dipl ing maschinenbau


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

Beiträge: 601
Registriert: 22.03.2005

NVidia Quadro K4000
Intel Xeon 3,7GHz 32GB RAM
Windows7 64bit
R26 <= CATIA V5 > =R19

erstellt am: 04. Mai. 2009 07:24    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 Nur für Gepetto 10 Unities + Antwort hilfreich

Moin Gepetto,
da wir ja alle neugierig sind: nach welchem Konzept bis du nun letztendlich vorgegangen?
Gruß

------------------
tomtom1972

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

Gepetto
Mitglied
Diplomand auf Arbeitssuche


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

Beiträge: 32
Registriert: 04.03.2009

erstellt am: 04. Mai. 2009 08:57    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 TomTom

Ich bin ähnlich deiner Vorgabe vorgegangen.

- Als erstes habe ich den Schwerpunkt ermittelt. Die Trägheitsachsen habe ich nicht berücksichtigt, weil mir die Ausrichtung im im Space wichtig ist.
- Im Schwerpunkt habe ich dann einen Part erstellt, der Flächen bei +/- 10000mm besitzt. Jeweils Parallel zu den 3 Ebenen macht das einen großen Flächenwürfel.
- Dann habe ich erst alle Flächenabsaände verringert und immer mit Clash auf Kontakt geprüft. Dabei habe ich eine Schleife genommen um die Abstände solange zu  verringern bis ein Kontakt zustande kommt.
- Die Flächen wurden dann über die Überschneidung zurückgesetzt und dann das ganze für jede Fläche einzeln erneut durchgeführt.
- dann brauchte ich nur noch die Abstände messen und es war erledigt.

Die Zeit für eine Berechnung hängt dabei ganz von den unterschiedlichen geometrischen Abmaßen in x,y,z ab. Damit meine ich, dass ein Würfel schneller als ein Besen berechnet ist. Ich denke Du weisst was ich meine...

Danke nochmal für die guten Ratschläge

MfG Jan

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

Maetes
Mitglied
Student


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

Beiträge: 118
Registriert: 05.05.2009

XP 64Bit
CATIA V5R19SP4
MS Office 2003

erstellt am: 24. Apr. 2012 14:31    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 Nur für Gepetto 10 Unities + Antwort hilfreich

Hallo zusammen!
Sorry wenn ich das alte Thema wieder rauskrame, aber gibt es da schon Fortschritte?
Man kann die Werte BBLx, BBLy und BBLz recht gut auslesen unter:
ActiveDocument.Product.Parameters.Item(x)
Hab aber noch nicht rausgefunden, wie man die Werte den Teilen zuordnen kann.
Wenn man nur einen Wert hat, ist dies ja kein Problem, wenn man mehrere hat, dann schon :-/

[Diese Nachricht wurde von Maetes am 24. Apr. 2012 editiert.]

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

Sky Walker
Mitglied



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

Beiträge: 13
Registriert: 24.07.2012

erstellt am: 24. Jul. 2012 10:09    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 Nur für Gepetto 10 Unities + Antwort hilfreich

Hallo Maetes,
wenn Dein Vorschlag der ist, an dem ich mich auch gerade versuche, dann muss man zuerst über "Measure Inertia" und durch "Keep Measure" ein "InertiaVolume" im Strukturbaum erzeugen, oder?
Weißt Du zufällig, wie ich diesen Vorgang (also das Messen und die Messung beibehalten) in die Makro einbauen kann?

Vielen Dank im Voraus!
Doris

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

IGELReiser
Mitglied


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

Beiträge: 9
Registriert: 16.11.2012

V5R19

erstellt am: 16. Nov. 2012 13:09    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 Nur für Gepetto 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Sky Walker:
Hallo Maetes,
wenn Dein Vorschlag der ist, an dem ich mich auch gerade versuche, dann muss man zuerst über "Measure Inertia" und durch "Keep Measure" ein "InertiaVolume" im Strukturbaum erzeugen, oder?
Weißt Du zufällig, wie ich diesen Vorgang (also das Messen und die Messung beibehalten) in die Makro einbauen kann?

Vielen Dank im Voraus!
Doris


genau DAS würde mich auch sehr interessieren 

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 10840
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 16. Nov. 2012 17:35    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 Nur für Gepetto 10 Unities + Antwort hilfreich

Servus
Hier findest du eine PowerCopy die dir eine solch ausgerichtete Box erstellt.
Oder bist du um Product unterwegs?

Gruß
Bernd

EDIT: Link korrigiert.

------------------
Warum einfach, wenn es auch kompliziert geht.

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

Sylas
Mitglied



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

Beiträge: 269
Registriert: 19.11.2012

Dell Precision T3500
Intel Xeon W3550 @ 3,07 GHz
12 GB RAM
CATIA V5 R28

erstellt am: 20. Jul. 2018 10:34    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 Nur für Gepetto 10 Unities + Antwort hilfreich

Hallo Zusammen

Ich habe solche Code auf Internet gefunden (Ich weiß nich ob ich kann das hier verlinken, deshalb copy+paste):

Code:

Sub CATMain()

On Error Resume Next

Dim oPartDoc As PartDocument
Dim oCurrentDoc As Document
Dim oPart As Product
Dim oInertia As Inertia
Dim InputObjectType(1) As Variant
Dim Status As String
Dim oSelection As Variant
Dim bCloseDoc As Boolean

Set oCurrentDoc = CATIA.ActiveDocument

'Exclude Drawings
If Right(oCurrentDoc.Name, 4) = "wing" Then
MsgBox "This function only operates on a part or product"
Exit Sub
End If


Set oSelection = oCurrentDoc.Selection

If Right(oCurrentDoc.Name, 4) = "Part" Then
Set oPart = oCurrentDoc.Product
oSelection.Add oPart
'GoTo RunBBOpenWindow
End If


If Right(oCurrentDoc.Name, 4) = "duct" Then
bCloseDoc = True
InputObjectType(0) = "Part"
InputObjectType(1) = "Product"
oSelection.Clear
Status = oSelection.SelectElement2(InputObjectType, "Pick a Part, Escape to Cancel", False)
If Status = "Cancel" Then Exit Sub
Set oPart = oSelection.Item2(1).LeafProduct.ReferenceProduct
If oPart.Name = oCurrentDoc.Product.Name Then
bCloseDoc = False
'GoTo RunBBOpenWindow
End If
CATIA.StartCommand "open in new window"
End If

RunBBNewWindow:

Set oPart = CATIA.ActiveDocument.Product
Dim oSelection2
Set oSelection2 = CATIA.ActiveDocument.Selection
oSelection2.Add oPart

RunBBOpenWindow:


CATIA.StartCommand "Measure Inertia"

Dim xDim As String
Dim yDim As String
Dim zDim As String

xDim = oPart.Parameters.GetItem("BBLx").Value
yDim = oPart.Parameters.GetItem("BBLy").Value
zDim = oPart.Parameters.GetItem("BBLz").Value

xDim = CStr(Round(xDim, 0))
yDim = CStr(Round(yDim, 0))
zDim = CStr(Round(zDim, 0))

Dim oMatParam As Parameter
Dim sMatParam As String
Set oMatParam = oPart.Parameters.GetItem("Definition")

sMatParam = oMatParam.ValueAsString

Dim oMassParam As Parameter
Dim sMassParam As String
Set oMassParam = oPart.UserRefProperties.GetItem("PDB_MASS")


sMassParam = oMassParam.ValueAsString
If sMassParam = "" Then sMassParam = "0"

If sMassParam = "0" Then
sMassParam = ""
If Right(CATIA.ActiveDocument.Name, 4) = "Part" Then
Set oInertia = oPart.GetTechnologicalObject("Inertia")

Select Case oInertia.Density

Case 0
sMassParam = ""

Case 1000
sMassParam = ""

Case Else
sMassParam = CStr(Round(oInertia.Mass, 1))

End Select

End If

End If


CATIA.StatusBar = "Start Creating Params"

Call SetParam(oPart, "LENGTH", xDim)
Call SetParam(oPart, "WIDTH", yDim)
Call SetParam(oPart, "THICKNESS/DIAMETER", zDim)
Call SetParam(oPart, "MATERIAL", sMatParam)
Call SetParam(oPart, "MASS", sMassParam)


MsgBox "Properties Applied:" & _
vbCrLf & "LENGTH: " & xDim & _
vbCrLf & "WIDTH: " & yDim & _
vbCrLf & "THICKNESS/DIAMETER: " & zDim & _
vbCrLf & "MATERIAL: " & sMatParam & _
vbCrLf & "MASS: " & sMassParam & _
vbCrLf & "Check Results Carefully!", vbOKOnly, oPart.Name

CATIA.DisplayFileAlerts = False
CATIA.StartCommand "Save"
'CATIA.ActiveDocument.Save
CATIA.DisplayFileAlerts = True


If bCloseDoc = True Then CATIA.ActiveDocument.Close

CATIA.StatusBar = "Macro Finished"

End Sub

Sub SetParam(ByRef oPart As Product, Name As String, Value As String)

'On Error GoTo CreateParam
Dim sParam As Parameter
Err.Clear

Set sParam = oPart.UserRefProperties.GetItem(Name)
sParam.ValuateFromString CStr(Value)

'GoTo Finish

CreateParam:
oPart.UserRefProperties.CreateString Name, CStr(Value)

Finish:


End Sub



Das gibt mir werte vom BoundingBox aber ich will jetzt die Werte nach custom AxisSystem (die vom Pad Skizze) gemasst habe. Wie kann ich das machen?

Gruß

Lukas

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 10840
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 20. Jul. 2018 16:20    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 Nur für Gepetto 10 Unities + Antwort hilfreich

Servus

Vermutlich hilft dir dieses Makro nicht weiter, da IMHO du per StartCommand nicht die Trägheitsmessung anpassen kannst.
Also wird es komplexer: zB Geometrie erzeugen und die Überschneidung messen -> Geometrie anpassen und langsam annähern (wie weiter oben beschrieben). Oder von "extern" per WinAPI die Klicks der manuellen Messung nachstellen

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

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

roccat
Mitglied
Konstrukteur


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

Beiträge: 148
Registriert: 19.02.2010

WinXP/Win7
Office XP/2007
Catia V5 R16-R19, VB6.0, VBA, BASCOM-AVR
VB .Net 2010

erstellt am: 01. Aug. 2018 12:18    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 Nur für Gepetto 10 Unities + Antwort hilfreich

Hallo,

ich weiß nicht genau wozu du die BoundingBox brauchst. Aber für die Rohmaßbestimmung bin ich folgender Maßen vorgegangen.

Ich habe Planes in allen Richtungen (XYZ in Plus und in Minus) erzeugt die definitiv weiter auseinander liegen als das Bauteil groß ist, Dann habe ich von den Planes zum zu Messenden Body jeweils die minimum Distanz ermittelt und Damit die Größe in X,Y und Z berechnet. Funktioniert für unseren Anwendungsfall problemlos.

mfG
Mario

------------------
Wenn das die Lösung sein soll,
will ich mein Problem zurück !!

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

tomtom1972
Mitglied
dipl ing maschinenbau


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

Beiträge: 601
Registriert: 22.03.2005

NVidia Quadro K4000
Intel Xeon 3,7GHz 32GB RAM
Windows7 64bit
R26 <= CATIA V5 > =R19

erstellt am: 01. Aug. 2018 13:17    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 Nur für Gepetto 10 Unities + Antwort hilfreich

Hallo,
das Problem ist dabei nur, das du diese Ebenen unabhängig von der Geometrie ausrichtetst (vermute ich jetzt mal) und bei komplexen Geometrien erhälst du dann nicht die "minimalen Abmaße" (eben die Bounding Box), sondern lediglichg die kleinsten Abmaße bezogen auf die Ausrichtung deiner Ebenen.
Gruß

------------------
tomtom1972

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

tomtom1972
Mitglied
dipl ing maschinenbau


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

Beiträge: 601
Registriert: 22.03.2005

NVidia Quadro K4000
Intel Xeon 3,7GHz 32GB RAM
Windows7 64bit
R26 <= CATIA V5 > =R19

erstellt am: 01. Aug. 2018 13: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 Nur für Gepetto 10 Unities + Antwort hilfreich

roccat
Mitglied
Konstrukteur


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

Beiträge: 148
Registriert: 19.02.2010

WinXP/Win7
Office XP/2007
Catia V5 R16-R19, VB6.0, VBA, BASCOM-AVR
VB .Net 2010

erstellt am: 01. Aug. 2018 13:39    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 Nur für Gepetto 10 Unities + Antwort hilfreich

Hallo,

jein, wie gesagt für unseren Anwendungsfall.

Bei uns selektiert der Benutzer eine ebene Fläche am zumessenden Body (eine Aufschraubfläche gibt es bei uns immer) und eine zweite Fläche die 90° dazu gedreht ist ( also eine Anlagefläche (ist meistens vorhanden) oder eine Plane oder eine Achsensystemfläche (auf dem wird meistens konstruiert, also vorhanden)).

Für diese zwei klicks bekommt er HxLxB als Fertigmaß sowie HxLxB mit Aufmaß das Fertiggewicht und das Rohgewicht.

Ich wollte damit nur sagen dass es besser ist, die Minimum-Distanz von einer Plane zum Solid zu messen als aufwendig mit Clash in TryandFail-Verfahren zu einem Wert zukommen.

mfG
Mario

------------------
Wenn das die Lösung sein soll,
will ich mein Problem zurück !!

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)2019 CAD.de | Impressum | Datenschutz