Hot News aus dem CAD.de-Newsletter:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Makro - Text auf Positionslinie

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:   Makro - Text auf Positionslinie (766 mal gelesen)
Olls Lai Lolli
Mitglied
Konstrukteur


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

Beiträge: 256
Registriert: 07.05.2009

MS Windows 7 Ultimate x64
Intel Xeon X5450 3.00 GHz
12 GB Ram
Nvidia Quadro FX 5800
SWX 2011 x64 SP 05
PDM Enterprise 2011 Sp5

erstellt am: 24. Okt. 2016 23: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


Pos_Line_Text.gif


ASM-Pos-Line-Text.zip


Macro-Pos-Line-Text-2016-10-24_2322.zip

 
Hallo Kollegen,

ich will mich über die Winterzeit, endlich mal tiefer mit dem Thema Makroprogrammierung auseinander setzen, bisher hat mir die Zeit und eine herausfordernde Aufgabe gefehlt. Eine Aufgabe für eine Makro habe ich jetzt und in den langen Winterabenden hoffentlich auch Zeit zum Probieren und Lernen.

Als Aufgabe habe ich mir gestellt, ein Makro zu schreiben (zusammen zu kopieren) mit dem auf die Positionslinie in einer Zeichnung, ausgehend von der Blase ein Beschriftung mit einem Wert aus der Stückliste eingefügt wird.

Das Makro soll im groben wie folgt ablaufen:

1. Anfangs und Endpunkt einer Beschriftungsfahne ermitteln
2. Ermitteln welcher Wert in der Blase angezeigt wird.
3. In der Stückliste in der entsprechenden Zeile den Wert auslesen, der auf die Linie geschrieben werden soll.
4. Winkel des Beschriftung berechne und ob der Einfügepunkt vorne oder hinten sein muss.

Hört sich eigentlich leicht an, aber die Schwierigkeiten kommen noch.
Ich habe bisher (auch in der „normalen“ Bedienoberfläche) keine Möglichkeit gefunden, den eingefügten Text so mit der Positionslinie zu verknüpfen, dass der sich Winkelrichtig mit bewegt, wenn die Blase verschoben wird.

Eine Möglichkeit wäre, eine Aktualisierungsfunktion mit ein zu bauen. Dazu müssten die Beschriftungen einem eigenen Layer zugeordnet werden. Beim Aktualisieren, werden dann alle Texte die sich auf dem Layer befinden gelöscht und anschließend neu eingefügt.
Aber….So weit bin ich noch lange nicht!  Ich scheiterte schon viel früher :-(

Ich habe mal damit angefangen, dass ich mir dieses Makro:
http://forum.cad.de/foren/ubb/Forum2/HTML/025421.shtml
noch mit weiteren  Werten ergänzt habe die ich hier gefunden haben:
http://help.solidworks.com/2012/English/api/sldworksapi/SolidWorks.Interop.sldworks~SolidWorks.Interop.sldworks.INote~GetBalloonInfo.html

Weil ich mir nicht sicher war, für welche Stelle die Koordinaten bei der Position auf der Seite der Blase gelten (Zentrum, oder Ende Linie) habe in die Zeichnung eine Skizze eingefügt und als Anfangs und Endpunkt die Werte übernommen, die das Makro ermittelt hat.
Das Ergebnis war ernüchternd… Meine Skizze ist an einer ganz anderen Stelle gesessen. Von welcher Null aus ermittelt das Makro den die Positionen?

Kann mir da jemand ein bisschen weiter helfen?
Ich erwarte nicht dass mir jemand das Makro auf dem Tablett serviert, ich will ja selber lernen wie man Makros schreibt.

Die Daten sind mit Solidworks 2013 erstellt.

Grüße OLL

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

nahe
Ehrenmitglied



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

Beiträge: 1542
Registriert: 18.01.2001

arbeite mit:
HP Z440 Workstation
Xenon (12-Kern) 3.5GHz
32GB RAM
238GB SSD
------------------------
SWX-2016 SP5.0
DBWorks-R15 SP2.17
----------------
Windows 7 64 bit
----------------
VB
VBA
Lotus Notes Datenbanken
erste Schritte mit Swift

erstellt am: 25. Okt. 2016 08: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 Olls Lai Lolli 10 Unities + Antwort hilfreich

Hallo OLL,

Deine Aufgabenstellung ist ganz schön heftig, für den Einstieg in die Makroprogrammierung.

Die Ermittlung von Koordinaten von Zeichnungselementen hat mich auch schon ganz schön beschäftigt,
und ich muss gestehen ich hab dann aufgegeben.
Das Problem ist (mein Wissensstand), dass die Koordinaten nicht einfach übernommen werden können.
Du musst dabei auch noch folgendes beachten
  die Position der Zeichnungsansicht auf dem Blatt
  den Skalierungsfaktor der Ansicht
  die Verdrehung der Zeichnungsansicht

Ich wünsch Dir auf jeden Fall viel Erfolg bei Deinem Vorhaben
(weiterhelfen kann ich Dir leider nicht  )

------------------
Grüße
Heinz

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

Christian_W
Ehrenmitglied V.I.P. h.c.
Konstrukteur (Dipl-Ing)


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

Beiträge: 2431
Registriert: 04.04.2001

SWX2016sp5 WIN10
(SWX2019 testweise)
proAlpha6.2e00/calinkV9
(Tactonworks)
(Medusa7, NesCAD2010,
solidEdge19) CSWP 12/2015

erstellt am: 25. Okt. 2016 10:14    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 Olls Lai Lolli 10 Unities + Antwort hilfreich

Hallo Oll,

stimme Heinz zu, sportliche Aufgabe  toitoitoi!

meine auch, die Position auf die Ansicht bezogen ist.
aber auf welche?
die Positionsnummern können - unabhängig davon wo sie auf eine Komponente zeigen - anderen Ansichten zugeordnet sein als man optisch denkt.
also Position wird in Ansicht 1 gezeigt, die Positionsnummer ist aber Ansicht 2 zugeordnet (merkt man beim Verschieben der Ansicht 2).

vielleicht müsste man das erstmal bereinigen..

Gruß, Christian

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

Olls Lai Lolli
Mitglied
Konstrukteur


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

Beiträge: 256
Registriert: 07.05.2009

MS Windows 7 Ultimate x64
Intel Xeon X5450 3.00 GHz
12 GB Ram
Nvidia Quadro FX 5800
SWX 2011 x64 SP 05
PDM Enterprise 2011 Sp5

erstellt am: 25. Okt. 2016 22: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

Jungs, ich muss zugeben, ihr habt Recht :-(

aber man wächst ja mit seinen Aufgaben.

Hab mal meine Zeichnung angepasst, nur noch eine Ansicht (Vorderansicht) , eine Positionsfahne, Blattmassstab 1:1.

Habs trotzdem nicht fertig gebracht, nachzuvollziehen wie SWX auf die Werte kommt, die im Makro ausgegeben werden. Hab auch mal versucht die Differenz zwischen Blattursprung und Ansichtenursprung mit zu verrechnen. Keine Chance.

Eine Erkenntnis hab ich aber doch gewonnen. Die ausgegebenen Werte stellen nicht den Anfangs und Endpunkt der Verbindungslinie dar. Sondern die Werte Endpunkt der Verbindungslinie (Übergang Linie <> Kreis) und Kreismittelpunkt.

Jetzt muss ich mal schauen, ob ich einen Befehl finde um den Anfangspunkt der Linie zu ermitteln.

Gruß OLL

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

Olls Lai Lolli
Mitglied
Konstrukteur


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

Beiträge: 256
Registriert: 07.05.2009

MS Windows 7 Ultimate x64
Intel Xeon X5450 3.00 GHz
12 GB Ram
Nvidia Quadro FX 5800
SWX 2011 x64 SP 05
PDM Enterprise 2011 Sp5

erstellt am: 16. Nov. 2016 20:16    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

Zitat:
Original erstellt von nahe:
Die Ermittlung von Koordinaten von Zeichnungselementen hat mich auch schon ganz schön beschäftigt,
und ich muss gestehen ich hab dann aufgegeben.
Das Problem ist (mein Wissensstand), dass die Koordinaten nicht einfach übernommen werden können.
Du musst dabei auch noch folgendes beachten
  die Position der Zeichnungsansicht auf dem Blatt
  den Skalierungsfaktor der Ansicht
  die Verdrehung der Zeichnungsansicht

Hallo Nahe,

schau mal was ich gefunden habe:

'-------------------------------------------------------------------------------------------------------------------
'Position der Bemaßung finden: AnnotationPosition(0) , AnnotationPosition(1), AnnotationPosition(2)
'-------------------------------------------------------------------------------------------------------------------
        MSTAB = view.ScaleDecimal
        ViPos = view.Position
        ViAngBo = view.angle
        ViAngWi = 360 / (2 * pi) * ViAngBo
           
    Set CurAnnotation = swDispDim.GetAnnotation
            AnnotationPosition = CurAnnotation.GetPosition
            AnnotationWinkel = CurAnnotation.GetLeaderAllAround
                                           
           
        If Not IsNull(AnnotationPosition) Then
            XCord = ((AnnotationPosition(0) + (2 / 1000)) / MSTAB) - (ViPos(0) / MSTAB)
            YCord = ((AnnotationPosition(1) + (2 / 1000)) / MSTAB) - (ViPos(1) / MSTAB)
        End If
           
   
'-------------------------------------------------------------------------------------------------------------------
'Block einfügepunkt setzen
'-------------------------------------------------------------------------------------------------------------------

Set swMathUtil = swApp.GetMathUtility

            pt(0) = XCord
            pt(1) = YCord
           
'-------------------------------------------------------------------------------------------------------------------
'Falls Ansicht gedreht muss Einfügepunkt gedreht werden (Funktioniert zum Teil!!) XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
'-------------------------------------------------------------------------------------------------------------------
Dim wi As Double

    rp = view.Position    'Ansichts Position
    wi = view.angle        'Ansichts Winkel
    p2 = pt

        If wi <> 0 Then
            temp = rotate_point(rp, p2, wi)
            Set swMathPoint = swMathUtil.CreatePoint((temp))
        Else
            Set swMathPoint = swMathUtil.CreatePoint((pt))
        End If
       
'-------------------------------------------------------------------------------------------------------------------
Quelle: http://ww3.cad.de/foren/ubb/Forum2/HTML/025220.shtml#000000

Ich versuch mal das Code-Schnipsel in meine Makrobaustelle rein zu basteln und schau mal was dann passiert.

Gruß OLL -> wieder mit einem Funken Hoffnung, sein Projekt doch noch realisiert zu bekommen

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

nahe
Ehrenmitglied



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

Beiträge: 1542
Registriert: 18.01.2001

arbeite mit:
HP Z440 Workstation
Xenon (12-Kern) 3.5GHz
32GB RAM
238GB SSD
------------------------
SWX-2016 SP5.0
DBWorks-R15 SP2.17
----------------
Windows 7 64 bit
----------------
VB
VBA
Lotus Notes Datenbanken
erste Schritte mit Swift

erstellt am: 17. Nov. 2016 15:16    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 Olls Lai Lolli 10 Unities + Antwort hilfreich

Hallo Oll

danke für den Hinweis, ich wird mir das bei Gelegenheit mal ansehen

------------------
Grüße
Heinz

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