Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  (Masse)mittelpunkt einer Seite (Face) bestimmen

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:  (Masse)mittelpunkt einer Seite (Face) bestimmen (1701 mal gelesen)
danielsc
Mitglied



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

Beiträge: 45
Registriert: 18.06.2009

erstellt am: 25. Jun. 2009 12:10    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 ein kleines Problem und zwar will ich den Mittelpunkt oder Massemittelpunkt einer Seite meines Products bestimmen. Hier erst mal der Code den ich bis jetzt habe:

Code:
Set selectionauflage = activedoc.Selection
InputObjectType(0) = "Face"
       
Status = selectionauflage.SelectElement2(InputObjectType, "Auflagefläche auswählen", False)
If (Status = "Cancel") Then
    MsgBox "Makro wurde abgebrochen", 16
    Exit Sub
Else
    Set userselauflage = selectionauflage.Item(1).Value
End If
     
'Mittelpunkt
Set reference1 = userselauflage.CreateReferenceFromObject(usersel)
Set Measurable1 = thespaworkbench.GetMeasurable(reference1)
Dim Gcoord(2)
Measurable1.GetCenter Gcoord

Also meiner Meinung nach müßte er mir doch jetzt die Koordinaten des Mittelpunkts der Seite in der Variable "GCoord" augeben oder? Macht er aber nicht sondern gibt mir einfach die leere Variable wieder aus.

Hab es auch schon mit "GetCOG" anstatt "GetCenter" probiert um den Schwerpunkt der Seite auszulesen aber auch in diesem Fall ist die Variable leer.

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: 25. Jun. 2009 18: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 danielsc 10 Unities + Antwort hilfreich

Hallo danielsc,

versuche die Zeile der Messung wie folgt zu ändern:

Code:
Set Measurable1 = thespaworkbench.GetMeasurable(selectionauflage.Item(1).Reference)

Jeder SelectedItem hat schon einen Reference und ein Face ist kein Objekt in dem Sinne von CreateReferenceFromObject.

Gruß,
Zoltan

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

danielsc
Mitglied



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

Beiträge: 45
Registriert: 18.06.2009

erstellt am: 26. Jun. 2009 08: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

damitkomm ich leider auch nicht weiter  bin hier langsam am verzweifeln. wollte den teil des makros eigentlich bis zum wochenende fertig bekommen 

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

AndiKrue
Mitglied
Berater


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

Beiträge: 72
Registriert: 04.12.2008

Windows XP Prof x64 Edition
Intel Xeon W3520 @ 2.67 GHz
8 GB RAM,
Nvidia Quadro FX 1800
CATIA V5R19

erstellt am: 26. Jun. 2009 10:32    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 danielsc 10 Unities + Antwort hilfreich

ich geh mal davon aus, dass center nicht ausgemessen wird bei einer reference, es kann gut sein, dass man zuerst ein extract erzeugen muss.

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

AndiKrue
Mitglied
Berater


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

Beiträge: 72
Registriert: 04.12.2008

Windows XP Prof x64 Edition
Intel Xeon W3520 @ 2.67 GHz
8 GB RAM,
Nvidia Quadro FX 1800
CATIA V5R19

erstellt am: 26. Jun. 2009 13: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 Nur für danielsc 10 Unities + Antwort hilfreich

Sollte so funktionieren, ich hoffe es hilft dir weiter.
Dein Fehler liegt wohl an dem CreateReferenceFromObject. Geht nur über CreateReferenceFromName, selektiert man im Baum, geht es über Object. Nochmal nen Edit, nun kann man wirklich nur Flächen im Baum und im Space selektieren.

Code:

Private Sub GetCenterOfGravityFromFace()

Dim oDocument
Dim Sel
Dim InputObjectType(1)
Dim Status
Dim i As Integer
Dim oFace
Dim oPart
Dim oReference
Dim oMeasurable
Dim iCenterOfGravity(2)

Set oDocument = CATIA.ActiveDocument
Set oPart = oDocument.Part
Set Sel = CATIA.ActiveDocument.Selection
Set TheSPAWorkbench = oDocument.GetWorkbench("SPAWorkbench")

InputObjectType(0) = "Face"
InputObjectType(1) = "BiDim"

Status = Sel.SelectElement3(InputObjectType, "### Select Face or Surface ###", False, CATMultiSelTriggWhenUserValidatesSelection, False)

If (Status = "Cancel") Then Exit Sub

For i = 1 To Sel.Count2

Set oFace = Sel.Item2(i).Value

If Not oFace.Parent.Name = "HybridShapes" Then

    Set oReference = oPart.CreateReferenceFromName(oFace.Name)
   
Else

    Set oReference = oPart.CreateReferenceFromObject(oFace)
   
End If

Set oMeasurable = TheSPAWorkbench.GetMeasurable(oReference)

oMeasurable.GetCOG iCenterOfGravity

MsgBox (iCenterOfGravity(0) & "; " & iCenterOfGravity(1) & "; " & iCenterOfGravity(2))

Next

End Sub


[Diese Nachricht wurde von AndiKrue am 26. Jun. 2009 editiert.]

[Diese Nachricht wurde von AndiKrue am 26. Jun. 2009 editiert.]

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

WMJS
Mitglied
Programmierer/ Zerspanungsmechaniker


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

Beiträge: 19
Registriert: 04.02.2013

Catia V5 R20 SP5 - R21 - <P>V5-6R2012

erstellt am: 21. Mrz. 2013 12:28    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 danielsc 10 Unities + Antwort hilfreich

Tut mir echt Leid, dass ich diesen Opa Fred (  ) nochmal hochholen muss, aber ich versuche das Programm von AndiKrue zu nutzen, um den Mittelpunkt einer vom Benutzer selektierten Fläche zu erzeugen, es funktioniert aber nur bis zu dem fett-markierten Aufruf. "PartDerSuche" ist mit dem Part der ausgewählten Fläche gefüllt.

Code:
' Globale Wertevergabe
Set Dokument = CATIA.ActiveDocument

~~~~~~~~~~~~~~~~~~~~~~~~~~~
' Unterprogramm zur Erstellung des Werkstückmittelpunktes
Sub MittelpunktErstellen

' Deklaration Unterprogramm...
Dim WerkzeugkastenSPA
Dim Referenz
Dim Messung
Dim Mittelpunkt(2)

' Wertevergabe Unterprogramm...
Set WerkzeugkastenSPA = Dokument.GetWorkbench ("SPAWorkbench")

'
If Not WerkstueckOberflaeche.Parent.Name = "HybridShapes" Then
Set Referenz = PartDerSuche.CreateReferenceFromName(WerkstueckOberflaeche.Name)
Else
Set Referenz = PartDerSuche.CreateReferenceFromObject(WerkstueckOberflaeche)
End If

Set Messung = WerkzeugkastenSPA.GetMeasurable(Referenz)

Messung.GetCOG Mittelpunkt

MsgBox (Mittelpunkt(0) & "; " & Mittelpunkt(1) & "; " & Mittelpunkt(2))

End Sub


Keine Ahnung, wie ich den Screenshot der Fehlermeldung hier reinkriege, aber es steht "Das Verfahren GetCOG ist fehlgeschlagen" darin

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