Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  VBA: Pos. von Ursprung von Komponenten auf Zeichnung ermitteln

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
  
PLM TechnologieForum Hannover
Autor Thema:  VBA: Pos. von Ursprung von Komponenten auf Zeichnung ermitteln (2339 mal gelesen)
red5000
Mitglied



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

Beiträge: 47
Registriert: 23.08.2011

Solidworks 2012 x64
Windows 7
Xeon W3565
Quadro 4000
RAM 12 GB

erstellt am: 25. Feb. 2014 12: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

Hallo,
ich habe ein Problem, dass eigentlich leicht zu lösen sein müsste aber ich steh grad wohl auf dem Schlauch.

Ich möchte Bezugshinweise genau auf den Ursprüngen der Unterbaugruppen der in einer Zeichenansicht dargestellten Baugruppe erstellen.
Aber ich kriege nicht heraus wie man die Position des Ursprungs ermittelt.

Was bereits funktioniert:
1. In einer Schleife werden alle Unterbaugruppen der in der Zeichenansicht dargestellten Baugruppe durchgegangen.
2. Von den Unterbaugruppen werden alle Features durchlaufen und mit swFeat.GetTypeName = "OriginProfileFeature" ermittelt ob es sich um den Ursprung handelt.
4. Bezugshinweis wird an den vorgegebenen Koordinaten erstellt

Was also fehlt ist Schritt 3: Koordinaten dieses Ursprungs ermitteln. Der Ursprung ist bereits in einem Feature-Objekt gespeichert. Wahrscheinlich ist das Featureobjekt gar nicht nötig und es gibt einen anderen Weg? Ich hoffe ihr könnt mir helfen.

LG, red

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

HenryV
Mitglied
Konstrukteur, Engineering


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

Beiträge: 813
Registriert: 18.05.2005

SolidWorks 2022 x64 SP5.0
Dell Precision 5820
Intel Xeon W-2125 4x4GHz
NVIDIA Quadro P2000 5GB
32GB RAM
2x Dell U2412M, 24" TFT
Windows 10 Enterprise x64 22H2
Microsoft 365 E5
Microsoft Visual Studio Enterprise 2022

erstellt am: 25. Feb. 2014 17: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 red5000 10 Unities + Antwort hilfreich

Hallo red

Schau dir mal diesen Thread an -> http://ww3.cad.de/foren/ubb/Forum2/HTML/016460.shtml

Gruss Andreas

------------------
21 ist nur die halbe Antwort.

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

red5000
Mitglied



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

Beiträge: 47
Registriert: 23.08.2011

Solidworks 2012 x64
Windows 7
Xeon W3565
Quadro 4000
RAM 12 GB

erstellt am: 26. Feb. 2014 09:27    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 Andreas, danke für die Antwort.
Ich hab mir den Thread angeschaut und auch das fertige Makro am Ende getestet. Damit kann ich in einer Zeichenansicht ein Punkt einfügen und (Vorausgesetzt es ist selektiert) von dem Punkt die Koordinaten ermitteln. Funktioniert perfekt aber bringt mich trotzdem nicht weiter oder übersehe ich etwas?

Ich krieg die Koordinaten von einem Ursprung nicht heraus. Wenn ich auf dem Ursprung ein Punkt platziere kann ich theoretisch mit diesem Makro davon die Koordinaten ermitteln. Aber um den Punkt zu einzufügen brauche ich ja wieder die Koordinaten vom Ursprung?

Ich kanns eigentlich nicht glauben aber ist es tatsächlich nicht mit einfachen Mitteln möglich die Koordinaten vom Ursprung eines Komponenten in einer Zeichnung auszulesen?

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

StefanBerlitz
Guter-Geist-Moderator
IT Admin (CAx)



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

Beiträge: 8756
Registriert: 02.03.2000

SunZu sagt:
Analysiere die Vorteile, die
du aus meinem Ratschlag ziehst.
Dann gliedere deine Kräfte
entsprechend und mache dir
außergewöhnliche Taktiken zunutze.

erstellt am: 26. Feb. 2014 11: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 Nur für red5000 10 Unities + Antwort hilfreich

Hallo red5000,

Zitat:
Original erstellt von red5000:
Ich kanns eigentlich nicht glauben aber ist es tatsächlich nicht mit einfachen Mitteln möglich die Koordinaten vom Ursprung eines Komponenten in einer Zeichnung auszulesen?

Hm, das kommt immer darauf an, was man unter einfach versteht. Als Programmierer muss du mit dem zurecht kommen was da ist, und sooooo schwierig ist das auch nicht.

Dein Ursprung hat immer die Korodinaten 0,0,0 - in Bezug auf das Modell (die Komponentenursprünge sind natürlich was anders, die sind ja in Bezug auf das Hauptmodell wiederum transformiert). Wenn du von dem Modell eine Zeichenansicht erstellst hat die eine Matrix, mit der man vom Modell auf die Zeichenansichtskoordinaten kommt. An diese kommst du per View::ModelToViewTransform. Jetzt musst du "nur" noch deine Modellkoordinaten mit der Zeichenansichtstransformmatrix multiplizieren (vektoriell) und schon hast du deine Modellkoordinaten in Bezug für diese Zeichenansicht in bezug auf den Zeichnungsnullpunkt.

Ich hab dir mal ein Beispiel gebastelt:

Code:
' **********************************************************************
' * Makro läuft über alle Zeichenansichten einer Zeichnung und gibt
' * die Koordinaten eines Modellpunktes in Bezug auf diese Zeichenansicht
' * in der Zeichnung aus
' *
' * 26.02.2014 Stefan Berlitz (stefan.berlitz@solidworks.cad.de)
' * http://solidworks.cad.de
' * http://swtools.cad.de
' **********************************************************************

Sub main()

    Dim swApp                       As SldWorks.SldWorks
    Dim swDraw                      As SldWorks.DrawingDoc
    Dim swView                      As SldWorks.View
    Dim swViewXform                 As SldWorks.MathTransform
   
    Dim swMathUtil                  As SldWorks.MathUtility
    Dim nPtData(2)                  As Double
    Dim vPtData                     As Variant
    Dim PunktModell                 As SldWorks.MathPoint
    Dim PunktAnsicht                As SldWorks.MathPoint
   
    ' an SolidWorks anhängen, aktive Zeichnung holen
    Set swApp = Application.SldWorks
    Set swDraw = swApp.ActiveDoc
   
    ' um einen Punkt zu bekommen brauchen wir die MathUtils
    Set swMathUtil = swApp.GetMathUtility
   
    ' Punkt in Modellkoordinaten, wie auch immer ermittelt.
    ' Hier im Beispiel per Hand vorgegeben der Nullpunkt
    nPtData(0) = 0      'X-Koordinate
    nPtData(1) = 0      'Y-Koordinate
    nPtData(2) = 0      'Z-Koordinate
    vPtData = nPtData
    Set PunktModell = swMathUtil.CreatePoint(vPtData)
   
    ' durch alle Zeichenansichten laufen und den Modellpunkt in
    ' Koordinaten der Zeichenansicht "übersetzen"
    Set swView = swDraw.GetFirstView
    Set swView = swView.GetNextView
   
    Do While Not swView Is Nothing
       
        ' Select regardless
        Set swViewXform = swView.ModelToViewTransform
        Set PunktAnsicht = PunktModell.MultiplyTransform(swViewXform)
       
        Debug.Print "View  = " & swView.Name
        Debug.Print "Punkt = (" & PunktAnsicht.ArrayData(0) * 1000# & ", " & _
                              PunktAnsicht.ArrayData(1) * 1000# & ", " & _
                              PunktAnsicht.ArrayData(2) * 1000# & ") mm "
        Debug.Print ""
       
        Set swView = swView.GetNextView
   
    Loop

End Sub



Wenn es dir hilft und dir ein paar weitere Stunden Suchen und Probieren gespart hat wäre es schön, wenn du mal einen Blick auf diesen Aufruf wie bei vielen meiner Makros wirst (natürlich auf freiwilliger Basis), deine örtliche Tafel wird es dir danken  

Ciao,
Stefan


------------------
Inoffizielle deutsche SolidWorks Hilfeseite    http://solidworks.cad.de

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

red5000
Mitglied



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

Beiträge: 47
Registriert: 23.08.2011

Solidworks 2012 x64
Windows 7
Xeon W3565
Quadro 4000
RAM 12 GB

erstellt am: 27. Feb. 2014 13: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

Hallo Stefan, danke für die Antwort, es wurde mir einiges klar. Sobald ich zuhause bin wird überwiesen. Aber bin gerade am verzweifeln  Ich habe nämlich gemerkt, dass das gar nicht das ist was ich brauche.

Kannst du mir bitte sagen wie ich ein Bezugshinweis an den Ursprung einer Unterbaugruppe auf einer Zeichnung verknüpfe? Es reicht nämlich nicht den Bezugshinweis einfach an die Koordinaten des Ursprungs einzufügen...

Mit swAnnotation.SetAttachedEntities(...) kann ich den Bezugshinweis an eine Entity heften. Außer IEntity Interface Members habe ich auch SelectEntity Method (IView) gefunden (für das ich blöderweise trotzdem die Entity brauche). Doch ich komme nicht weiter. Ich muss vom Ursprung irgendwie die Entity ermitteln, wie mache ich das?

LG, red

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