| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| Intertool 2024 |
Autor
|
Thema: Auswahl und Modifikation von Linien in Zeichnungen (9045 mal gelesen)
|
Harald Lüling Mitglied
Beiträge: 39 Registriert: 30.04.2003
|
erstellt am: 14. Mai. 2005 06:43 <-- editieren / zitieren --> Unities abgeben:
Wir benötigen eine Funktion mit der Linienarten, Strichstärken, Linienfarben in SWX -Zeichnungen in andere Linienarten, Strichstärken, Linienfarben umgewandelt werden können. Ebenso sollen Linien auf bestimmten Layern ausgewählt und modifiziert werden können. Kennt jemand ein Makro bzw. ein "API-Programm" mit dem solche Modifikationen durchgeführt werden können? Die Auswahl soll jeweils über die ganze Zeichnung incl. Zeichnungsrahmen und Schriftfeld erfolgen. Wir haben es nicht geschafft, diese Aufgaben mit den Standardfunktionen von SWX 2005 zu lösen. Vielen Dank für Hinweise! Gruß Harald
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lutz Federbusch Ehrenmitglied V.I.P. h.c. Dipl.-Ing. Maschinenbau
Beiträge: 3094 Registriert: 03.12.2001 alle SW seit 97+ AutoCAD2016-2022 ERP ProAlpha + CA-Link Intel Core i7-7820K 32GB Win10x64 Quadro K5000 SpacePilot
|
erstellt am: 17. Mai. 2005 13:27 <-- editieren / zitieren --> Unities abgeben: Nur für Harald Lüling
Na, das geht doch aber schon immer mit den normalen Bordmitteln: Schalte mal die Symbolleiste Linienformat ein und darin hast Du die Werkzeuge, die Du brauchst. Ansonsten kannst Du auch Layer so steuern, daß sie bestimmte Farben, Linienarten und -dicken steuern; Deine Linien sollten dann aber auch die Definition des Layers nehmen und nichts eigenes definieren (das setzt sich dann nämlich durch). Wenn Du die anderen Layer ausschaltest, kannst Du die Elemente der eingeschalteten auswählen. Und über Filter kannst Du Dir auch bestimmte Elemente der Zeichnung auswählen... Über Komponentenlinien kannst Du auch regeln, auf welchem Layer welche Komponente landet, wenn es nicht standardmäßig werden soll. Sage mal bitte genauer, was Du tun wolltest und was dabei nicht ging! ------------------ Lutz Federbusch Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Harald Lüling Mitglied
Beiträge: 39 Registriert: 30.04.2003
|
erstellt am: 17. Mai. 2005 18:35 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von Lutz Federbusch: Na, das geht doch aber schon immer mit den normalen Bordmitteln: Schalte mal die Symbolleiste Linienformat ein und darin hast Du die Werkzeuge, die Du brauchst.
Klar, dass das bei der Erstellung von neuen Zeichnungen klappt. Wie beschrieben geht es aber darum, in vorhandenen Zeichnungen auswählen und umwandeln zu können. (Altdaten) Die Geometrieelemente sind auf bis zu ca. 250 Layern verteilt. Filter, die auf Linientypen ansprechen, haben unser Vertragshändler und wir nicht entdeckt. Gruß Harald Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lutz Federbusch Ehrenmitglied V.I.P. h.c. Dipl.-Ing. Maschinenbau
Beiträge: 3094 Registriert: 03.12.2001 alle SW seit 97+ AutoCAD2016-2022 ERP ProAlpha + CA-Link Intel Core i7-7820K 32GB Win10x64 Quadro K5000 SpacePilot
|
erstellt am: 18. Mai. 2005 10:05 <-- editieren / zitieren --> Unities abgeben: Nur für Harald Lüling
Probiere doch mal aus der Symbolleiste Auswahlfilter den für Skizzensegmente. Der wählt alle Linien aus, egal von welchem (eingeblendeten) Layer. Ansonsten: Löschen von Layern hinterläßt die Linien in der Zeichnung; Linien kannst Du auch auf einen anderen Layer verschieben. Funktioniert gut bei Altdaten, machen wir ständig... Ich sehe da eigentlich nirgends ein Problem!?! Sind Deine Linien evtl. in Blöcken "gefangen"? Dann müßtest Du erst die Blöcke auflösen. Oder gib uns mal ein Beispiel! ------------------ Lutz Federbusch Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lutz Federbusch Ehrenmitglied V.I.P. h.c. Dipl.-Ing. Maschinenbau
Beiträge: 3094 Registriert: 03.12.2001 alle SW seit 97+ AutoCAD2016-2022 ERP ProAlpha + CA-Link Intel Core i7-7820K 32GB Win10x64 Quadro K5000 SpacePilot
|
erstellt am: 18. Mai. 2005 11:02 <-- editieren / zitieren --> Unities abgeben: Nur für Harald Lüling
Und falls Du es über die API als Makro machen möchtest: Sub Wahl() Dim Zeichnung As Object Dim Ansicht As Object Dim Skizze As Object Dim SkizzenSegment As Object Dim Elemente As Variant Dim Anzahl As Long Dim ret As Boolean Dim n, i As Long Set swApp = CreateObject("SldWorks.Application") Set Zeichnung = swApp.ActiveDoc Set Skizze = Zeichnung.GetActiveSketch If Skizze Is Nothing Then MsgBox ("Auswahl für " + Zeichnung.GetTitle + " fehlgeschlagen!") Exit Sub End If n = 0 Elemente = Skizze.GetSketchSegments ' Damit sind alle Linien ausgewählt If IsEmpty(Elemente) Then Exit Sub ' Abbruch, wenn keine Skizzenelemente erlangt werden konnten Anzahl = UBound(Elemente) + 1 For i = 0 To (Anzahl - 1) Set SkizzenSegment = Elemente(i) 'Hier könnte man jetzt das einzelne Element vom typ SketchSegment untersuchen, 'mit SkizzenSegment.GetType kannst Du untersuchen, ob es Linie, Bogen, Spline o.ä. ist; 'mit .Select2 ob es ausgewählt war 'mit .Layer auf welchem Layer ist das Element; LayerOverride verrät, ob es Eigenschaften gibt, die den Layer überschreiben 'mit .Color die Farbe 'mit .Style die Linienart 'mit .Width die Liniendicke ret = SkizzenSegment.Select2(True, 0) ' wenn ausgewählt, dann soll z.B. n hochgezählt werden If ret = True Then n = n + 1 Next i MsgBox (Str(Anzahl) + " Skizzensegmente gefunden!" + vbCrLf + "Davon " + Str(n) + " ausgewählt!")
End Sub ------------------ Lutz Federbusch Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Hermann_W Mitglied
Beiträge: 1 Registriert: 19.05.2005
|
erstellt am: 19. Mai. 2005 17:38 <-- editieren / zitieren --> Unities abgeben: Nur für Harald Lüling
Hallo Lutz, Harald arbeitet mit mir zusammen an der Lösung des oben geschilderten Problems. Vielleicht ist es nicht richtig "rübergekommen": Wir haben Altdaten importiert; deren Elemente liegen auf ganz unterschiedlichen Layern, haben (teilweise) keine Linienstärke und weisen unterschiedliche Farben auf. Anhand dieser Farben könnten wir die Elemente aber "identifizieren" (z. B. liegen alle Vollinien auf grün, alle Mittellinien auf weiß usw.). Wir möchten mit einem Makro den importierten "farbigen" Elementen im SWX Strichbreite, Farbe und evtl. Layer zuweisen. Wir haben im SWX aber keine Möglichkeit gefunden, farbige Elemente herauszufiltern. Evtl. geht das ja nur mit einem API. Könnten mit deinem API nacheinander farbige Elemente herausgefiltert werden,um diesen dann bestimmte Eigenschaften zuzuweisen? Vielen Dank, Hermann Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lutz Federbusch Ehrenmitglied V.I.P. h.c. Dipl.-Ing. Maschinenbau
Beiträge: 3094 Registriert: 03.12.2001 alle SW seit 97+ AutoCAD2016-2022 ERP ProAlpha + CA-Link Intel Core i7-7820K 32GB Win10x64 Quadro K5000 SpacePilot
|
erstellt am: 20. Mai. 2005 10:06 <-- editieren / zitieren --> Unities abgeben: Nur für Harald Lüling
Ja, das SketchSegment-Objekt ermöglicht die Abfrage und das Setzen von Farbe, Dicke usw. wie oben aufgeführt. Hat es die Farbe, dann mach etwas mit dem aktuellen Skizzenelement - z.B. die Farbe ändern, es auf Layer verschieben, dicker machen oder was Du willst! Zur Nutzung der Befehle mußt Du mal in die API-Hilfe schauen. Mit dem Codegerüst sollte es aber kein Problem mehr sein. ------------------ Lutz Federbusch Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |