Autor
|
Thema: (Masse)mittelpunkt einer Seite (Face) bestimmen (1701 mal gelesen)
|
danielsc Mitglied
Beiträge: 45 Registriert: 18.06.2009
|
erstellt am: 25. Jun. 2009 12:10 <-- editieren / zitieren --> Unities abgeben:
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
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 / zitieren --> Unities abgeben: Nur für danielsc
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
Beiträge: 45 Registriert: 18.06.2009
|
erstellt am: 26. Jun. 2009 08:55 <-- editieren / zitieren --> Unities abgeben:
|
AndiKrue Mitglied Berater
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 / zitieren --> Unities abgeben: Nur für danielsc
|
AndiKrue Mitglied Berater
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 / zitieren --> Unities abgeben: Nur für danielsc
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
Beiträge: 19 Registriert: 04.02.2013 Catia V5 R20 SP5 - R21 - <P>V5-6R2012
|
erstellt am: 21. Mrz. 2013 12:28 <-- editieren / zitieren --> Unities abgeben: Nur für danielsc
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 |