Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Mal wieder: Koordinaten von RefPunkten lesen

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
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS
  
Tierisch mobil: Der autonome Inspektionsroboter ANYmal
Autor Thema:  Mal wieder: Koordinaten von RefPunkten lesen (1885 mal gelesen)
riker187
Mitglied
Dipl.-Ing.

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

Beiträge: 2
Registriert: 05.06.2005

erstellt am: 06. Jun. 2005 21:26    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,

Ich bin gerade dabei ein Macro zu schreiben welches Koordinaten von RefPunkten auslesen soll.

Ich bin schon so weit ein Macro zu haben welches Genau dies tut. Das Problem ist nur, die Punkte die ich auslesen will, befinden sich in Teilen, welche in Unterbaugruppen gruppiert sind. Die Teile wiederum haben ein anderes Koordinatensystem als die Hauptbaugruppe.

Wenn ich nun die Koordinaten auslese:

Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swSelMgr = swModel.SelectionManager
Set swFeat = swSelMgr.GetSelectedObject5(1)
Set swRefPt = swFeat.GetSpecificFeature2
Set swRefPtData = swFeat.GetDefinition
Set swMathPt = swRefPt.GetRefPoint
 
Debug.Print "    Pt = (" & swMathPt.ArrayData(0) * 1000# & ", " & swMathPt.ArrayData(1) * 1000# & ", " & swMathPt.ArrayData(2) * 1000# & ") mm"

(ja, es ist das Beispiel aus der VBA-Hilfe...)

bekomme ich nur die Kordinaten im Bezug auf das Koordinatensystem des Teils. Wenn ich manuell mit dem "Messen"-Tool die Koordinaten anzeigen lasse, bekomme ich aber die Koordinaten im Bezug auf das Haupt-Koordinatensystem.

Wie kann ich die Koordinaten umrechnen, dass sie sich auf das Hauptsystem beziehen, oder kann ich vielleicht das System umstellen bevor ich die Koordinaten auslese?

Vielen Dank schon mal im Vorraus...

Jens

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

Tortos
Mitglied
Konstrukteur


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

Beiträge: 86
Registriert: 20.01.2003

erstellt am: 08. Jun. 2005 08:01    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 riker187 10 Unities + Antwort hilfreich

Hi Jens

Würde mich aus sehr interessieren, da ich vor dem gleichen Problem stehe.
Eine alternative Möglichkeit für mich wäre noch die RefPunkte aus den Einzelteilen per Makro in die Hauptbaugruppe zu übernehmen wenn das Möglich ist.
Danach kann man die Punkte dann richtig auslesen.

Weiß jeman ob man RefPunkte in eine 3Dskizze ünernehmen kann??

Mfg
Tortos

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

waldi
Mitglied
 Softwerker


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

Beiträge: 272
Registriert: 07.08.2001

SW 2006 SP4

erstellt am: 08. Jun. 2005 08: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 Nur für riker187 10 Unities + Antwort hilfreich

Über den SelectionMgr kommst mit GetSelectedObjectsComponent2(index) an die Komponente, die den Punkt enthält. Von der holst du dir die Matrix (irgendwas mit Transform), dann musst du Matrix*Punkt rechnen, evtl. musst du die Matrix vorher noch invertieren, ich weiss jetzt gerade nicht, ob du vielleicht schon die invertierte bekommst.

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

riker187
Mitglied
Dipl.-Ing.

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

Beiträge: 2
Registriert: 05.06.2005

erstellt am: 09. Jun. 2005 21: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

Vielen Dank... Hier das fertige Macro für die Comunity:

Option Explicit


Sub main()

    Dim swApp                      As SldWorks.SldWorks
    Dim swModel                    As SldWorks.ModelDoc2
    Dim swSelMgr                    As SldWorks.SelectionMgr
    Dim swComp                      As SldWorks.Component2
    Dim swFeat                      As SldWorks.feature
    Dim swRefPt                    As SldWorks.refPoint
    Dim swRefPtData                As SldWorks.RefPointFeatureData
    Dim swMathPt                    As SldWorks.MathPoint
    Dim vEntArr                    As Variant
    Dim vEnt                        As Variant
    Dim swEnt                      As SldWorks.Entity
    Dim swSkPt                      As SldWorks.SketchPoint
    Dim swSkSeg                    As SldWorks.SketchSegment
    Dim nStatus                    As Long
    Dim bRet                        As Boolean
    Dim MathUtil                    As SldWorks.MathUtility
   
    Dim Location(3) As Double
    Dim dLoc(2) As Double
    Dim vLoc As Variant
    Dim oLoc As Object
    Dim oLocXformed As Object
    Dim vLocXformed As Variant
    Dim ViewXform As Variant
    Dim oViewXform As Object

   

    Set swApp = Application.SldWorks
    Set MathUtil = swApp.GetMathUtility
    Set swModel = swApp.ActiveDoc
    Set swSelMgr = swModel.SelectionManager
    Set swFeat = swSelMgr.GetSelectedObject5(1)
    Set swRefPt = swFeat.GetSpecificFeature2
    Set swRefPtData = swFeat.GetDefinition
    Set swMathPt = swRefPt.GetRefPoint
    Set swComp = swSelMgr.GetSelectedObjectsComponent2(1)

    ViewXform = swComp.GetXform
   
    ReDim Preserve ViewXform(15)
   
    Set oViewXform = MathUtil.CreateTransform((ViewXform))
   
    dLoc(0) = swMathPt.ArrayData(0)
    dLoc(1) = swMathPt.ArrayData(1)
    dLoc(2) = swMathPt.ArrayData(2)
   
    vLoc = dLoc
   
    Set oLoc = MathUtil.CreatePoint((vLoc))
   
    Set oLocXformed = oLoc.MultiplyTransform(oViewXform)
   
    vLocXformed = oLocXformed.ArrayData
   
    Debug.Print "  " & swFeat.Name

    Debug.Print "    Pt = (" & vLocXformed(0) * 1000# & ", " & vLocXformed(1) * 1000# & ", " & vLocXformed(2) * 1000# & ") mm"

End Sub

Gruß, Jens

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

monti0505
Mitglied
Ingenieur


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

Beiträge: 33
Registriert: 16.07.2008

erstellt am: 18. Nov. 2008 17:22    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 riker187 10 Unities + Antwort hilfreich

Hallo,

ich habe ein ähnliches Problem. Ich verwende einen Sketchpoint statt einem RefPoint. Aber im Code weiss ich nicht wie ich dem Multiplaytransform den Referenzpunkt übergeben kann (Ursprung).

Code:

    Dim swApp As SldWorks.SldWorks
    Dim selMgr As SldWorks.SelectionMgr
    Dim Model As SldWorks.ModelDoc2
    Dim SketchPoints As Variant
    Dim SketchFeature As SldWorks.Feature
    Dim PointCoords(2) As Double
    Dim MathUtil As SldWorks.MathUtility
    Dim MathTrans As SldWorks.MathTransform
    Dim MathP As SldWorks.MathPoint
    Dim ModelSketchTransform As Variant
    Dim Feature As SldWorks.SketchPoint

    'Connect the program to SolidWorks

    Set swApp = CreateObject("SldWorks.Application")

    Set Model = swApp.ActiveDoc

    'Prepare the MathUtility

    Set MathUtil = swApp.GetMathUtility

    'Get the SelectionMgr
    Set selMgr = Model.SelectionManager

 


    'Get the Sketchpoint from the SelectionMgr


    Set Feature = selMgr.GetSelectedObject6(1, -1) 'Feature ist ein Sketchpoint

    PointCoords(0) = Feature.X

    PointCoords(1) = Feature.Y

    PointCoords(2) = Feature.Z


    Set MathP = MathUtil.CreatePoint(PointCoords)

    'Display the point coordinates in relation to the sketch origin

    SketchPoints = MathP.ArrayData

    MsgBox SketchPoints(0) & ". " & SketchPoints(1) & ". " & SketchPoints(2) 

'bis hier klappt, ich bekomme die Koordinaten des gesetzen Punkts in der Zeichnung, aber die Koordinaten beziehen sich auf das KO-Systems des Punktes selbst. Wenn ich aber in SWXSolidWorks per Hand messe werden die Koordinaten vom Model/Zeichnung genommen.

'Ab hier weiss ich dann nicht genau wie ich weitermachen soll, damit ich dem Multiplaytransform was "richtiges" übergeben kann.

Set MathTrans = MathTrans.Inverse

    'Multiply the point by the inverse transform

    'MathP now refers to the point location in the model coordinates

    Set MathP = MathP.MultiplyTransform(MathTrans)

    'Display the point coordinates in relation to the model origin

    SketchPoints = MathP.ArrayData

    MsgBox SketchPoints(0) & ", " & SketchPoints(1) & ", " & SketchPoints(2)


Hoffe, mir kann jemand weiterhelfen

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

ZooM86
Mitglied



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

Beiträge: 17
Registriert: 13.03.2009

erstellt am: 17. Mrz. 2009 17:00    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 riker187 10 Unities + Antwort hilfreich

Hallo,
Also mit dem Code von riker187 bekomm ich eine Fehlermeldung.
An der Stelle

Set swRefPt = swFeat.GetSpecificFeature2

sagt er mir ich hätte "Objektvariable oder WITH-Blockvariable nicht festgelegt"
Was mach ich falsch?
Hab alles Deklariert etc.

Liegt es vll daran das er meinen Referenzpunkt erst auswählen muss bevor die Methode klappt?

Wäre für jede Hilfe dankbar


Edit: erst denken dann reden .

Es Lag natürlich daran das ich meinen RefPoint vorher nicht SelectByID2 ausgewählt hab

[Diese Nachricht wurde von ZooM86 am 17. Mrz. 2009 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)2024 CAD.de | Impressum | Datenschutz