Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  API Wie aus Programm Nutzer zum selektieren bewegen und Selektion ausführen lassen

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
  
Ihr Fabriklayout mit 3DEXPERIENCE DELMIA
Autor Thema:  API Wie aus Programm Nutzer zum selektieren bewegen und Selektion ausführen lassen (703 mal gelesen)
A.Oertel
Mitglied
Dipl.Ing.


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

Beiträge: 270
Registriert: 12.10.2000

erstellt am: 02. Dez. 2005 15: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

Hallo zusammen,
ich weiss, dass ähnliche Fragen schon gestellt worden sind, und ich habe schon in der API-Hilfe gesucht, komme aber nicht auf den richtigen Einstiegspunkt. Mein Problem ist folgendes:
Wie kann ich aus einem VBA-Programm in SolidWorks dem Benutzer nach dem Aufruf des Programms und einer entsprechenden Aufforderung, z.B. mit msgbox zum selektieren bewegen und dann seine Selektion ausführen lassen?

Gruß
Armin

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

Piet
Mitglied
Konstruktionsleiter & Konstrukteur


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

Beiträge: 661
Registriert: 20.11.2001

SWx 2021

erstellt am: 05. Dez. 2005 10:56    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 A.Oertel 10 Unities + Antwort hilfreich

Erklär das doch bitte noch mal ausführlicher anhand eines Beispiels: Was soll der Benutzer auswählen, und was soll dann passieren?

Piet

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: 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: 05. Dez. 2005 12:46    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 A.Oertel 10 Unities + Antwort hilfreich

@Armin
so eine Funktion hätte ich auch schon gesucht, leider vergeblich :-(
Falls Dir so etwas unterkommt, dann lass es mich bitte wissen.

@Piet
ich denke Armin meint eine Funktion, die es erlaubt während der
Ausführung eines Makros eine "Unterbrechung" einzubauen um Benutzereingaben abzufragen (z.B.: Punkt-, Flächen-, Featureselektion usw.....), weil es eben öfters sinnvoll ist, erst nach dem das makro gestartet wurde Benutzereingaben entgegen zu nehmen.

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

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: 05. Dez. 2005 15: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 A.Oertel 10 Unities + Antwort hilfreich

Hallo zusammen,

ich hab's selbst noch nicht gebraucht (ich versuche meine Makros immer mit Pre-Selektion zu schreiben), aber das in einem Makro zu machen ist wohl nicht ganz einfach ... theoretisch müsste man sich für die Events NewSelectionNotify registrieren und aud das Abfeuern hören, aber ob und wie das in einem Makro geht weiß ich nicht.

Wie wäre es denn als Alternative sich wie die SolidWorks-Funktionen eine richtige PropertyManagerPage (also so eine Art Eigenschaftsseite am linken Rand) aufzubauen, da gibt es u.a. eine "Control" PropertyManagerPageSelectionbox bei, das automatisch solche Selektionen überwacht.

Bevor jemand fragt: hab ich aber auch noch nie selbst gemacht und kein Beispiel für zur Hand  

Ciao,
Stefan

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

OT: Mapcar kann Aufmunterung gebrauchen

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

jens_oliver
Mitglied
Softwareentwickler


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

Beiträge: 114
Registriert: 28.06.2005

erstellt am: 05. Dez. 2005 16:19    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 A.Oertel 10 Unities + Antwort hilfreich

Hallo,

möchte man nur zwischen den beiden Anwendungen (Makro und Solidworks) hin und her wechseln, kann man einfach das Makro als UserForm aufbauen und „ungebunden “ aufrufen.

Das Makro bekommt zwar keine Nachricht wenn etwas selektiert wurde, aber mit einem Klick auf den Schalter im UserForm hat man die Daten. 


Sub main()
UserForm1.Show (vbModeless)
End Sub


// UserForm1
Private Sub CommandButton1_Click()
    Dim swApp As Object
    Dim Part As ModelDoc2
    Dim SelMgr As SldWorks.SelectionMgr
    Set swApp = Application.SldWorks
    Set Part = swApp.ActiveDoc
    Set SelMgr = Part.SelectionManager
    Count = SelMgr.GetSelectedObjectCount2(-1)
    If Count = 1 Then
    ret = MsgBox("somthing selected!", vbOKOnly, "Info")
    Else
    ret = MsgBox("nothing selected!", vbOKOnly, "Info")
    End If
End Sub

Gruß Oliver Knepper

------------------
Software nach Maß für Ihr CAD-System
www.ib-knepper.de

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

A.Oertel
Mitglied
Dipl.Ing.


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

Beiträge: 270
Registriert: 12.10.2000

erstellt am: 07. Dez. 2005 15:24    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 zusammen,
danke für die Anregungen. Die Idee mit der PropertyManagerPage scheint wohl die einzig "saubere" Lösung zu sein.
Schade, aber was solls...
Danke allen zusammen.

Gruß
Armin

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

VBSpawn
Mitglied
Programmierer


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

Beiträge: 514
Registriert: 23.08.2005

Sorgfältige Planung ersetzt niemals pures Glück.

erstellt am: 08. Dez. 2005 08:49    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 A.Oertel 10 Unities + Antwort hilfreich


EVENTS.zip

 
Hi zusammen,

hier mal ein kleines bsp..... das als Grundlage verwendet werden könnte.

Startet bitte in Sub Main

Vielleicht hilft es als Ansatz.
Jedenfalls läuft es über den NewSelectionNotify <INSERT/> Gruß an Stefan <\INSERT>

Gruß
Micha

------------------

Zitat:
Interpunktion und Orthographie des Postings sind frei erfunden.
Eine Übereinstimmung mit aktuellen oder ehemaligen Regeln wäre rein zufällig und ist nicht beabsichtigt.

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

jens_oliver
Mitglied
Softwareentwickler


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

Beiträge: 114
Registriert: 28.06.2005

erstellt am: 08. Dez. 2005 13:13    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 A.Oertel 10 Unities + Antwort hilfreich

Hallo,

hier eine einfache Lösung mit einer "While" Schleife. Wichtig ist die Funktion "DoEvents" die die Kontrolle ans Betriebssystem übergibt, damit es andere Ereignisse verarbeiten kann.

Sub main()
Dim swApp As Object
Dim Part As ModelDoc2
Dim SelMgr As SldWorks.SelectionMgr
Set swApp = Application.SldWorks
Set Part = swApp.ActiveDoc
Set SelMgr = Part.SelectionManager
MsgBox ("please select something") 
Count = SelMgr.GetSelectedObjectCount2(-1)
While Count = 0
    DoEvents
    Count = SelMgr.GetSelectedObjectCount2(-1)
Wend

MsgBox("somthing selected!", vbOKOnly, "Info")

End Sub


Gruß Oliver Knepper

------------------
Software nach Maß für Ihr CAD-System
www.ib-knepper.de

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

VBSpawn
Mitglied
Programmierer


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

Beiträge: 514
Registriert: 23.08.2005

Sorgfältige Planung ersetzt niemals pures Glück.

erstellt am: 08. Dez. 2005 13:36    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 A.Oertel 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von jens_oliver:
Hallo,

hier eine einfache Lösung mit einer "While" Schleife. Wichtig ist die Funktion "DoEvents" die die Kontrolle ans Betriebssystem übergibt, damit es andere Ereignisse verarbeiten kann.

Sub main()
Dim swApp As Object
Dim Part As ModelDoc2
Dim SelMgr As SldWorks.SelectionMgr
Set swApp = Application.SldWorks
Set Part = swApp.ActiveDoc
Set SelMgr = Part.SelectionManager
MsgBox ("please select something") 
Count = SelMgr.GetSelectedObjectCount2(-1)
While Count = 0
     DoEvents
     Count = SelMgr.GetSelectedObjectCount2(-1)
Wend

MsgBox("somthing selected!", vbOKOnly, "Info")

End Sub


Gruß Oliver Knepper



Hi,

auch eine Möglichkeit .... allerdings geht die Prozessorauslastung dabei ziemlich nach oben.
Gruß
Micha

------------------

Zitat:
Interpunktion und Orthographie des Postings sind frei erfunden.
Eine Übereinstimmung mit aktuellen oder ehemaligen Regeln wäre rein zufällig und ist nicht beabsichtigt.

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

thw
Mitglied
System Manager CAD


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

Beiträge: 13
Registriert: 21.11.2002

SW2018

erstellt am: 08. Dez. 2005 21:34    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 A.Oertel 10 Unities + Antwort hilfreich

Mit einer Messagebox ist das schlecht machbar, weil diese immer MODAL sind.

Ich habe mir so geholfen, dass ich einen nicht-modalen Dialog offen lasse, die eigentliche Funktionalität in die Ausführungsfunktionen des jeweiligen Buttons eingefügt habe und darin das Makro entsprechend reagieren lasse. Beispiel aus einem Makro, die folgende Aktion wird erst dann ausgeführt, wenn der Anwender auf den Button "Weiter" klickt:

Code:
Private Sub CommandButton_Weiter_Click()
    If selmgr.GetSelectedObjectCount = 1 And selmgr.GetSelectedObjectType2(1) = swSelDRAWINGVIEWS Then
        renameDrawing
    Else
        MsgBox "Es muss EINE Zeichnungsansicht gewählt sein, bevor Sie auf 'Weiter' klicken!"
    End If
End Sub

(Das stammt aus einem Makro, welches eine geöffnete Zeichnungsdatei unter dem Namen des in einer angewählten Zeichnungsansicht vorhandenen Modells speichert. Die eigentliche Funktion "renameDrawing" wird erst aufgerufen, nachdem obige Prüfung erfolgreich ausgeführt wurde.)

Vorsicht ist allerdings geboten, da Anwender "auf halbem Weg zum Ziel"  die Datei wechseln können und dann das Makro weiter ausführen lassen!

D.h. du musst stets prüfen, ob der Kontext noch derselbe ist. Mit Property-Manager sollte das nicht passieren, aber wenn man entsprechende Abfragen einbaut, geht's auch ohne.

THw

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