| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS | | | | Moderne CAx Entwicklungsmethoden: Generatives Design, Gitternetzstrukturen & MBD, ein Webinar am 11.10.2024
|
Autor
|
Thema: Start- und Endwerte alle Linien einer Skizze bestimmen (1381 mal gelesen)
|
GuidoCAD Mitglied
Beiträge: 202 Registriert: 27.11.2009 SolidWorks Premium 2013 SP 5.0 (de) Win7 Pro N SP 1 (de)
|
erstellt am: 26. Mrz. 2014 12:36 <-- editieren / zitieren --> Unities abgeben:
Hallo, derzeit entwerfe ich einige Leiterplatten mit der EAGLE PCB Design Software. Hierbei kann der Fall eintreten, dass ein Bauteil in der Bibliothek von EAGLE noch nicht definiert ist und ich es selbst anlegen muss. Beim Anlegen eines neuen Bauteils erstellt man für die Boardansicht des Bauteils ein einfaches Symbol (vergl. Anhang). Leider ist das Anlegen dieser Symbole in EAGLE nicht ganz so komfortabel wie das Anlegen einer Skizze in SolidWorks. Ich würde daher sehr gerne die Skizzen in SolidWorks erstellen und diese dann exportieren. Die Anforderungen sind hierbei nicht sehr hoch. Die Skizze besteht (in der Regel) nur aus einzelnen Linien. Ich benötige eigentlich nur die xy-Koordinaten der Start- und Endwerte der Linien. Momentan habe ich keinerlei Ansatz hiefür. Habt ihr mir einen Tipp? Mit freundlichen Grüßen Guido
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StefanBerlitz Guter-Geist-Moderator IT Admin (CAx)
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. Mrz. 2014 12:59 <-- editieren / zitieren --> Unities abgeben: Nur für GuidoCAD
|
GuidoCAD Mitglied
Beiträge: 202 Registriert: 27.11.2009 SolidWorks Premium 2013 SP 5.0 (de) Win7 Pro N SP 1 (de)
|
erstellt am: 26. Mrz. 2014 22:01 <-- editieren / zitieren --> Unities abgeben:
Hallo Stefan, vielen Dank für den Tipp. Ausgehend von dem von Dir verlinkten Makro habe ich mir das im Folgenden angefügte Makro erstellt. Markiert man in SolidWorks eine Skizze und führt das Makro aus wird eine Liste erstellt, die für jede Linie der Skizze den zugehörigen EAGLE-Befehl enthält. An den Beginn der Liste werden noch zwei EAGLE-Befehle vorangestellt. Der erste Befehl dient der "Layer"-Auswahl, der zweite Befehl stellt EAGLE so ein, dass die angegebenen Punkte der Linien direkt verbunden werden. Die erstellte Befehlsliste wird im Debugfenster ausgegeben und in die Zwischenablage kopiert. Damit der Befehl "CommandList.PutInClipboard" keine Fehlermeldung hervorruft muss der Verweis auf die "Microsoft Forms 2.0 Object Library" ("%windir%\system32\FM20.DLL") gesetzt sein. Hierfür in der Visual Basic Programmierumgebung unter "Extras" => "Verweise..." das entsprechende Häkchen setzten. Über die Konstanten am Anfang des Makros kann man den x- und y-Werten noch einen Offset mitgeben, die Linienbreite vorgeben und den EALGE-Layer auf dem die Linien erstellt werden sollen angeben. Zu guter Letzt kann auch noch die Anzahl der Nachkommastellen angegeben werden mit denen die x- und y-Werte ausgegeben werden. Bitte beachten: - Vor dem Aufruf des Makros eine Skizze auswählen (Die Skizze darf nicht zur Bearbeitung geöffnet sein). - Das Makro fängt keinerlei Fehler ab. Mit freundlichen Grüßen Guido Code: Dim swApp As Object Option Explicit '------------------------------------------------ ' Preconditions: Model document is open and a sketch is selected. ' Postconditions: None '------------------------------------------------- Sub main() Const conXOffset = 0 'x-Offset in mm Const conYOffset = 0 'y-Offset in mm Const conLineWidth = 0.025 'Width of lines in inch Const conEagleLayer = 51 'tdocu => 51 'tplace => 21 Const conDecimalPlaces = 6 'Number of decimal places used for output Dim swApp As SldWorks.SldWorks Dim swModel As SldWorks.ModelDoc2 Dim swPart As SldWorks.PartDoc Dim swSelMgr As SldWorks.SelectionMgr Dim swFeat As SldWorks.Feature Dim swSketch As SldWorks.Sketch Dim NumLines As Long Dim vLines As Variant Dim i As Variant Dim CommandList As DataObject Set swApp = CreateObject("SldWorks.Application") Set swModel = swApp.ActiveDoc Set swPart = swModel Set swSelMgr = swModel.SelectionManager Set swFeat = swSelMgr.GetSelectedObject5(1) Set swSketch = swFeat.GetSpecificFeature2 Set CommandList = New DataObject NumLines = swSketch.GetLineCount2(1) 'Exclude crosshatch lines vLines = swSketch.GetLines2(1) 'Exclude crosshatch lines CommandList.SetText "Layer " & conEagleLayer & ";" CommandList.SetText CommandList.GetText + vbNewLine + "SET Wire_Bend 2;" For i = 0 To NumLines - 1 CommandList.SetText CommandList.GetText + vbNewLine & _ "Wire " & Replace(CStr(Round(conLineWidth, conDecimalPlaces)), ",", ".") & _ " (" & _ Replace(CStr(Round(vLines(12 * i + 6) * 1000 / 25.4, conDecimalPlaces)), ",", ".") & " " & _ Replace(CStr(Round(vLines(12 * i + 7) * 1000 / 25.4, conDecimalPlaces)), ",", ".") & _ ") (" & _ Replace(CStr(Round(vLines(12 * i + 9) * 1000 / 25.4, conDecimalPlaces)), ",", ".") & " " & _ Replace(CStr(Round(vLines(12 * i + 10) * 1000 / 25.4, conDecimalPlaces)), ",", ".") & _ ");" Next i CommandList.PutInClipboard Debug.Print "----------" Debug.Print CommandList.GetText End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|