| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| Intertool 2024 |
Autor
|
Thema: Stempel Makro (1592 / mal gelesen)
|
remtc Mitglied
Beiträge: 34 Registriert: 18.09.2017 Solidworks Prof. 2023SP3 x64 auf Win 10
|
erstellt am: 05. Jul. 2019 11:25 <-- editieren / zitieren --> Unities abgeben:
Hallo liebe Gemeinde, ich möchte ein Makro erstellen um in Zeichnungen "Stempel"-Markierungen (wiederholt auf einem Sheet eines Dokumentes) zu setzen das Makro hat 4 Auswahlmöglichkeiten um den Block (bzw. 4 verschieden Blöcke die gespeichert sind [jeweils um 90° gedreht]) einzufügen. was ich gefunden habe war ein Makro bei dem der Block an eine bestimmte Position gesetzt wird. Wie bekomme ich es nun hin dass der Block während des Makros am Mauszeiger "kleben" bleibt ich "stempeln" kann und danach einen anderen Block aus dem Makro auswähle. bisher habe ich mir folgendes dabei gedacht: Code:
Private Sub OptionButton1_Click() Dim swapp As Object Dim Sheet As Object Dim DrawingDoc As Object Dim boolstatus As Boolean Dim part As Object Dim drawing As Object 'SldWorks.DrawingDoc Dim SketchManager As Object 'SldWorks.SketchManager Dim Block Dim newBlockInstance As Object Dim SelMgr As Object 'Dim XCord As Double 'X Koordinate für Einfügepunkt 'Dim YCord As Double 'Y Koordinate für Einfügepunkt 'Dim swMathUtil As Object 'SldWorks.MathUtility 'Dim swMathPoint As Object 'SldWorks.MathPoint Dim swBlockInstance As Object 'SldWorks.SketchBlockInstance Dim pt(2) As Double Dim newBlockDefinition As Object Set swapp = CreateObject("SldWorks.Application") Set part = swapp.ActiveDoc Set SelMgr = part.SelectionManager Set DrawingDoc = swapp.ActiveDoc '* prüfen, ob überhaupt ein Dokument offen ist ... If DrawingDoc Is Nothing Then MsgBox "Kein Dokument offen" Exit Sub End If If (DrawingDoc.GetType <> swDocDRAWING) Then '* ... und ob das auch eine Zeichnung ist MsgBox "Nur für Zeichnungen sinnvoll" Exit Sub End If 'Block einfügen 'Set swMathUtil = swapp.GetMathUtility 'XCord = 0.148 'YCord = 0.078 'Set swMathPoint = swMathUtil.CreatePoint((pt)) Set newBlockDefinition = part.SketchManager.MakeSketchBlockFromFile(swMathPoint, "F:\Solidworks\Vorlagen\Bloecke\Pruefkennzeichen_45_o_li.SLDBLK", False, 1, 0) 'pt(0) = XCord 'pt(1) = YCord pt(2) = 0 End Sub
ebenso stehe ich vor dem Problem, dass in dem Moment wo die Userform geöffnet ist ich nicht ins Solidworks Dokument rein klickern kann... kann mir bitte jemand helfen oder einen Denkanstoß geben Danke 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: 05. Jul. 2019 12:00 <-- editieren / zitieren --> Unities abgeben: Nur für remtc
Hallo remtc, könnte ev. über den Maus-Event funktionieren (ich hab so etwas aber selbst noch nie gemacht) Siehe dazu auch in der Onlinehilfe unter Run SOLIDWORKS Commands and Synthesize Mouse Events Example (VBA) DMouseEvents_MouseSelectNotifyEventHandler Anmerkung: - ich hab bis jetzt immer die Finger davon gelassen - bei einem meiner Makros frage ich einfach den zuletzt mit der Maus geklickten Punkt ab ist zwar nicht besonders schön, weil die Position dann doch oft nicht passt die Eventprogrammierung, war mir dann aber dafür zu aufwendig - aber wenn Du da was machst, wäre ich auch sehr daran interessiert
------------------ Grüße Heinz Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bk.sc Ehrenmitglied V.I.P. h.c. Konstrukteur Sondermaschinenbau
Beiträge: 2776 Registriert: 18.07.2012 -Solid Works 2019 SP5 -Pro Engineer WF 3
|
erstellt am: 05. Jul. 2019 15:07 <-- editieren / zitieren --> Unities abgeben: Nur für remtc
Hallo remtc Zitat: ebenso stehe ich vor dem Problem, dass in dem Moment wo die Userform geöffnet ist ich nicht ins Solidworks Dokument rein klickern kann...kann mir bitte jemand helfen oder einen Denkanstoß geben
ich glaub du brauchst ein ungebundens Form für dein vorhaben, schau dir hierzu mal die ShowModal-Eigenschaft der Form an. Gruß Bernd ------------------ --- Man muß nicht alles wissen, man muß nur wissen wo es steht --- Staatlich anerkannte Deutschniete Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
remtc Mitglied
Beiträge: 34 Registriert: 18.09.2017 Solidworks Prof. 2023SP3 x64 auf Win 10
|
erstellt am: 08. Jul. 2019 07:58 <-- editieren / zitieren --> Unities abgeben:
Hallo miteinander, ich hätte nicht gedacht, dass es so kompliziert werden könnte :/ Vielen Dank für die Hinweise. Ich werde mal versuchen etwas auf die Beine zu stellen- mal sehen ob es klappt. Falls noch jemand input haben sollte - immer her damit und über Programmierbeispiele würde ich mich auch nicht ärgern ^^' Grüße remtc Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
remtc Mitglied
Beiträge: 34 Registriert: 18.09.2017 Solidworks Prof. 2023SP3 x64 auf Win 10
|
erstellt am: 08. Jul. 2019 10:36 <-- editieren / zitieren --> Unities abgeben:
Hallo nochmal habe ein Stück Makro gefunden um das Klickevent der Maus abzufragen - ähnlich wie es Heinz bei sich macht Zitat: einfach den zuletzt mit der Maus geklickten Punkt ab[fragen]
jedoch erhalte ich völlig falsche Punkte... ich scheine mich in einem falschen Koordinatensystem zu befinden... aber in welchem und wie änder ich das?! Code:
Dim swApp As SldWorks.SldWorks Dim swModel As SldWorks.ModelDoc2 Dim swView As SldWorks.ModelView Dim WithEvents swMouse As SldWorks.Mouse Dim X_, Y_ As Double Dim listenForClick As BooleanPrivate Sub CommandButton1_Click() Set swModel = swApp.ActiveDoc Set swView = swModel.ActiveView Set swMouse = swView.GetMouse listenForClick = True End Sub Private Function swMouse_MouseLBtnDownNotify(ByVal X As Long, ByVal Y As Long, ByVal WParam As Long) As Long If listenForClick Then X_ = X Y_ = Y MsgBox (X & "; " & Y) listenForClick = False Unload UserForm1 End If End Function Private Sub UserForm_Initialize() Set swApp = Application.SldWorks End Sub
Ich möchte mich gerne im Dokumenten Koordinatenssystem bewegen und klicken (bsp.: [0,0] befindet sich links unten in der ecke) bezüglich der Modaleigenschaften reicht es wenn man die Userform über Code: UserForm1.Show vbModeless
aufruft [Diese Nachricht wurde von remtc am 08. Jul. 2019 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
remtc Mitglied
Beiträge: 34 Registriert: 18.09.2017 Solidworks Prof. 2023SP3 x64 auf Win 10
|
erstellt am: 11. Jul. 2019 11:55 <-- editieren / zitieren --> Unities abgeben:
Hallo, da sich doch einige diesen Threat hier ansehen wollte ich einen möglichen Lösungsansatz posten: über Klassen Definition einen Mausklick abwarten und an dieser Stelle einen Block einfügen ... siehe anhang... Grüße remtc Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |