| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| Zerspanungstreff mit SolidCAM bei der Hoffmann GmbH in Achim/Bremen |
Autor
|
Thema: SWX API Rahmenauswahl (519 / mal gelesen)
|
nahe Ehrenmitglied
Beiträge: 1747 Registriert: 18.01.2001 arbeite mit: Dell Precision 7750 i7 2,6 GHz 6 Kerne 32GB RAM 512GB SSD NVIDIA Quadro RTX 4000 ------------------------ SWX-2020 SP5.0 EPDM ---------------- Windows 10 ---------------- VB.net VB VBA ein wenig Swift am Mac
|
erstellt am: 18. Nov. 2022 10:33 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich bräuchte für ein Makro die Möglichkeit, Elemente in einer Zeichnungen, durch eine Rahmenauswahl auszuwählen. In der Online-Hilfe und im WWW habe ich dazu, bis jetzt, nichts gefunden. Hat jemand von Euch ev. einen Tipp? ------------------ Grüße Heinz Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
deckelmaho Mitglied Konstrukteur
Beiträge: 239 Registriert: 03.03.2020 SolidWorks 2023 SP5 Windows 10 64bit Office 2019
|
erstellt am: 18. Nov. 2022 13:28 <-- editieren / zitieren --> Unities abgeben: Nur für nahe
|
deckelmaho Mitglied Konstrukteur
Beiträge: 239 Registriert: 03.03.2020 SolidWorks 2023 SP5 Windows 10 64bit Office 2019
|
erstellt am: 18. Nov. 2022 16:36 <-- editieren / zitieren --> Unities abgeben: Nur für nahe
So jetzt hab ichs geschafft... In meinem Beispiel mach ich es zwar in einem Teil, wird aber für Zeichnungen ebenfalls funktionieren. Da ich nur mit einer Einzelauswahl arbeite, habe ich es über eine Textbox gelöst für Mehrfachselektion ist wahrscheinlich eine Listbox die bessere Wahl. 1.Trigger für den Eventstart festlegen Wenn die Textbox angeklickt wird, soll der Nutzer die Möglichkeit der Auswahl bekommen.
- Wie im SOLIDWORKS auch, wird das Textfeld farblich unterlegt um dem Nutzer zu signalisieren dass er eine Auswahl tätigen kann.
- Das aktuelle "ModelDoc" übergebe ich in eine Variable vom Typ "Part", da sich darin auch die Methode "NewSelectionNotify"
- Ich schalte anschließend die "FeatureDimensions" des Teils auf sichtbar, damit direkt ein Maß aus dem Teil gewählt werden kann.(Denn Schritt kannst du dir in der Zeichnung sicherlich sparen)
- Nun am wichtigsten, das Event starten (ab jetzt wird jede Selection im Teil erkannt und die adressierte Funktion aufgerufen)
2.Was soll beim Erkennen einer Selektion passieren
- Sobald eine Auswahl erkannt wurde, hole ich mir den "SelectionManager"
- Anschließend hole ich in einem separaten Sub die Auswahl in meine Textbox (ich will hier nur die erste Auswahl, du kannst natürlich auch
eine Schleife über alle Elemente des SelectionManagers machen und die Elemente in einer Listbox ausgeben)
- Zurück in der swPart_NewSelectionNotify hole ich den SWXHelper zurück in den Vordergrund. (Ich kann mir vorstellen das dies für ein registriertes AddIn wie der Passungstabelle nicht nötig ist. Der SWXHelper ist aber Stand-alone)
3.Das Event wieder entfernen Beim Verlassen der Textbox das Event entfernen
- Den Textbox-Hintergrund wieder auf weiß umstellen
- Die "FeatureDimensions" wieder auf den Eistellung zurücksetzen die der User vorher hatte (wirst du auch nicht brauchen)
- Das Event wieder entfernen, damit es nicht mehr bei jeder Selection getriggert wird
Ich hoffe dir und vielleicht einigen anderen hilft diese Anleitung etwas weiter. Beste Grüße Kevin ------------------ HOMEPAGE | SWXTools.de - SWXHelper für SOLIDWORKS KONTAKT | support@swxtools.de FACEBOOK | facebook.com/SWXHelper TWITTER | twitter.com/SWXTools [Diese Nachricht wurde von deckelmaho am 18. Nov. 2022 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nahe Ehrenmitglied
Beiträge: 1747 Registriert: 18.01.2001 arbeite mit: Dell Precision 7750 i7 2,6 GHz 6 Kerne 32GB RAM 512GB SSD NVIDIA Quadro RTX 4000 ------------------------ SWX-2020 SP5.0 EPDM ---------------- Windows 10 ---------------- VB.net VB VBA ein wenig Swift am Mac
|
erstellt am: 18. Nov. 2022 22:13 <-- editieren / zitieren --> Unities abgeben:
Hallo Kevin, Danke für das Beispiel. Scheinbar war meine Frage missverständlich, ich möchte die Rahmenauswahl nicht dem Benutzer überlassen, sondern per Makro machen. ------------------ Grüße Heinz Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
deckelmaho Mitglied Konstrukteur
Beiträge: 239 Registriert: 03.03.2020 SolidWorks 2023 SP5 Windows 10 64bit Office 2019
|
erstellt am: 19. Nov. 2022 07:49 <-- editieren / zitieren --> Unities abgeben: Nur für nahe
Hi Heinz, dafür hab ich auch mal was geschrieben, um zu prüfen ob die Ansichten sich auf dem Blatt befinden. Du legst für den Rahmen einfach Min und Max Werte fest. Xmin Ymin Xmax Ymax Dann machst du eine Schleife über alle Annotations, Ansichten oder was auch immer im deiner Selektion landen soll und wenn sich die Position des Elements innerhalb der Min und Max Werte befindet, dann zum SelektionManager adden. Wenn du da Hilfe brauchst kann ich dir auch Code schicken. EDIT Ich würde nicht versuchen das über die Maussteuerung der Windows API zu machen, es sieht spooky für den Nutzer aus und greift unter Umständen auch auf Prozesse außerhalb von SOLIDWORKS zu. Beste Grüße Kevin ------------------ HOMEPAGE | SWXTools.de - SWXHelper für SOLIDWORKS KONTAKT | support@swxtools.de FACEBOOK | facebook.com/SWXHelper TWITTER | twitter.com/SWXTools
[Diese Nachricht wurde von deckelmaho am 19. Nov. 2022 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nahe Ehrenmitglied
Beiträge: 1747 Registriert: 18.01.2001 arbeite mit: Dell Precision 7750 i7 2,6 GHz 6 Kerne 32GB RAM 512GB SSD NVIDIA Quadro RTX 4000 ------------------------ SWX-2020 SP5.0 EPDM ---------------- Windows 10 ---------------- VB.net VB VBA ein wenig Swift am Mac
|
erstellt am: 19. Nov. 2022 12:05 <-- editieren / zitieren --> Unities abgeben:
Hallo Kevin, danke für den Tipp, da hätte ich auch selbst draufkommen können. Ich dachte halt, dass es ev. eine Funktion vom Selectionmanager gibt, die das Unterstützt ------------------ Grüße Heinz Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |