| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| Formnext 2024, eine Veranstaltung am 19.11.2024
|
Autor
|
Thema: Bemassung vs. Zwischenablage! (5400 mal gelesen)
|
G. Dawg Ehrenmitglied V.I.P. h.c. Teamleiter FEM Simulation
Beiträge: 2622 Registriert: 12.07.2004 SolidWorks_2o2o SP3.o Win10_x64, Quadro_P2ooo. VisualStudio_2o19_Pro. FEM: Forge_NxT_HPC, ANSYS_WB. 3D-Printer: Ultimaker_2, Tinker_Gnome.
|
erstellt am: 27. Jul. 2006 07:58 <-- editieren / zitieren --> Unities abgeben:
Grüsse aus der Sauna!!!! Kurze Frage: Wie kann ich den Wert einer Bemassung (gesteuerte oder Referenzbemassung) in die Zwischenablage bekommen ohne das eigentliche Modell zu öffnen oder irgendwelche Skizzen zu bearbeiten? Plus, ich möchte den Wert mit allen mikrigen 8 Kommastellen kopieren. CTRL+C funktioniert hier für mich NICHT! Da nur, wahlweise(nach befinden von SolidWorks?!), 2-3 Kommastellen mitkommen. Manchmal auch nur eine!!!! Vielen Dank für Euren Input! PS: Wäre schön, wenn man das Mass anwählen könnte (egal welche Art von Bemassung), eine Taste drücken und voilà! ------------------ SolidWorks is my friend... SolidWorks, frieeeend! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HaPe Mitglied Dipl. Ing Maschinenbau, Konstrukteur, CAD-Admin
Beiträge: 1096 Registriert: 27.11.2001 i7 CPU 960@3.20GHz 8GB Ram Quadro 2000 4GB 70GB Raid 0 WIN7 prof. SP1 64 bit SWX 2010 SP5.0 SWX 2012 SP5.0 SWX 2013 SP5.0
|
erstellt am: 27. Jul. 2006 09:26 <-- editieren / zitieren --> Unities abgeben: Nur für G. Dawg
Hallo, bei der Messfunkttion kannst Du die Anzahl der Nachkommastellen einstellen, dann den Abstand messen, der Dich interressiert und den wert aus der Anzeige kopieren, nicht ganz auf Tastendruck aber geht auch recht schnell. Gruß HaPe Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
G. Dawg Ehrenmitglied V.I.P. h.c. Teamleiter FEM Simulation
Beiträge: 2622 Registriert: 12.07.2004 SolidWorks_2o2o SP3.o Win10_x64, Quadro_P2ooo. VisualStudio_2o19_Pro. FEM: Forge_NxT_HPC, ANSYS_WB. 3D-Printer: Ultimaker_2, Tinker_Gnome.
|
erstellt am: 27. Jul. 2006 09:35 <-- editieren / zitieren --> Unities abgeben:
Danke, HaPe! Du hast meinen Alptraum zu Wirklichkeit werden lassen!!! Genau das wollte ich nicht! Denn ich habe ja die Bemassung schon! Ich wollte nur deren Wert. Leider lässt sich ein Mass nicht mehr messen Auch in der Bemassungseigenschaften lässt sich der Wert NICHT kopieren! (Wieso eigentlich nicht, Mrs. SolidWorks?) Ich denke, das wird ein Verbesserungsvorschlag! ------------------ SolidWorks is my friend... SolidWorks, frieeeend! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jan Mitglied Dipl.-Ing.
Beiträge: 1271 Registriert: 23.12.2000 Dienstl. Lenovo 64GB, nVidia, Win10, SW 2019, 2021 u. 2022 Priv. Dell M7740 16GB, nVidia , Win10, SW 2012, SW 2021 und SW 2022 Prem.
|
erstellt am: 27. Jul. 2006 10:14 <-- editieren / zitieren --> Unities abgeben: Nur für G. Dawg
Moin, mit steuernden Maßen geht es doch! Doppelklick auf das Feture, doppelklick auf das Maß, im Dialogfenster kopieren und dann wieder irgendwo einfügen! Wenn Du dir entsprechend alle Nachkommastellen anzeigen läßt, kannst Du ein gesteuertes Maß von hinten durch die Brust ins Auge bekommen. Starte das Beschriftungswerkzeug und klicke dann auf ein gesteuertes Maß. Dieses wird dann in den Text übernommen und kann kopieret werden;-) Was willst Du überhaupt mit den ganzen Nachkommastellen? Das gibt Mecker mit der Fertigung! Jan [Diese Nachricht wurde von Jan am 27. Jul. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
G. Dawg Ehrenmitglied V.I.P. h.c. Teamleiter FEM Simulation
Beiträge: 2622 Registriert: 12.07.2004 SolidWorks_2o2o SP3.o Win10_x64, Quadro_P2ooo. VisualStudio_2o19_Pro. FEM: Forge_NxT_HPC, ANSYS_WB. 3D-Printer: Ultimaker_2, Tinker_Gnome.
|
erstellt am: 27. Jul. 2006 10:18 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von Jan: mit steuernden Maßen geht es doch!
Danke Jan! Doch GENAU das ist mein Problem! Es ist ein NICHT gesteuertes Mass!!! Habe SWX mal ein Vorschlag geschickt... in 2012 wird es dann vermutlich funktionieren. Wieso sollte man dieses Mass, aus den Eigenschaften hinaus, nicht kopieren können, frage ich mich!!! EDIT: Nun, ich muss auch sichergehen, dass alles stimmt! Wir zeichnen hier aber von Natur aus auf alle Kommastellen genau! Ich runde eigentlich meine Masse nur sehr selten! Da die in der Fertigung unsere Modelle brauchen für die Programme, kann ich nicht einfach alles auf 0.00 runden! Wir müssen sowieso auf 0.000 bemassen und auf 0.00000000 zeichnen. Stimmen muss es bis ins kleinste Molekül! ...mehr auch wegen der Interferenzprüfung! ------------------ SolidWorks is my friend... SolidWorks, frieeeend! [Diese Nachricht wurde von G. Dawg am 27. Jul. 2006 editiert.] 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: 27. Jul. 2006 10:35 <-- editieren / zitieren --> Unities abgeben: Nur für G. Dawg
Hallo Gilbert, wenn ich dich richtig verstehe brauchst du das zugrunde liegende "echte" Maß mit allen Nachkommastellen. Wenn dem so ist hab ich dir ein Makro gebastelt, was das auf eine einfache Art zum Kopieren in die Zwischenaböage zur Verfügung stellt: Code:
' ********************************************************************** ' * Makro holt vom selektierten Maß den Wert und zeigt ihn mit ' * allen 8 Nachkommastellen in einer Inputbox zum einfachen kopieren an. ' * ' * 27.07.2006 Stefan Berlitz (stefan.berlitz@solidworks.cad.de) ' * http://solidworks.cad.de ' * http://swtools.cad.de ' **********************************************************************Dim swApp As Object Dim ModelDoc As Object Dim SelectionMgr As Object Dim DispDim As Object Dim Dimension As Object Dim DimValue As Double Const swSelDIMENSIONS = 14 Sub main() Set swApp = CreateObject("SldWorks.Application") Set ModelDoc = swApp.ActiveDoc Set SelectionMgr = ModelDoc.SelectionManager ' dann alle selektierten Objekte durchgehen If SelectionMgr.GetSelectedObjectCount <> 1 Then ' Warnmeldung MsgBox "Bitte nur eine einzelne Bemaßung selektieren" Else ' wenn es eine Bemaßung ist If SelectionMgr.GetSelectedObjectType(1) = swSelDIMENSIONS Then ' an die Bemaßung anklinken, auf dem Schirm ist ja eine DisplayDimension ' also erst mal den zugrunde liegenden Parameter holen Set DispDim = SelectionMgr.GetSelectedObject3(1) Set Dimension = DispDim.GetDimension ' den Wert auslesen, API typisch ist der in Metern, also umrechnen ' Umrechnung quick&dirty auf Millimeter DimValue = Dimension.GetSystemValue2("") * 1000 InputBox "Wert ist:", "Bemaßungswert kopieren", DimValue Else MsgBox "Bitte nur eine einzelne Bemaßung selektieren" End If End If End Sub
Direkt in die Zwischenablage kopieren würde ich gerne machen, aber von VBA aus ist das nur mit wilder Trickserei zu machen, da denke geht der Umweg über die Inputbox und einmal CTRL-C drücken. GGf. noch ein Sendkeys einfummeln Ciao, Stefan ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de Member of CAD.de BOINC Team - | Seti@Home | CPDN | Einstein@Home Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
G. Dawg Ehrenmitglied V.I.P. h.c. Teamleiter FEM Simulation
Beiträge: 2622 Registriert: 12.07.2004 SolidWorks_2o2o SP3.o Win10_x64, Quadro_P2ooo. VisualStudio_2o19_Pro. FEM: Forge_NxT_HPC, ANSYS_WB. 3D-Printer: Ultimaker_2, Tinker_Gnome.
|
erstellt am: 27. Jul. 2006 10:42 <-- editieren / zitieren --> Unities abgeben:
|
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: 27. Jul. 2006 11:05 <-- editieren / zitieren --> Unities abgeben: Nur für G. Dawg
Hehe, na gut, weil Ferien sind, die Bürotemperaturen sich langsam dem Siedepunkt nähern (war das früher schön, als die UNIX-Kisten Temperaturen über 27 Grad nicht ausgehalten haben und deswegen Klimaanlage im Büro Pflicht war. Die blöden modernen Kisten halten viel zu viel aus ) der Griff in die Trickkiste: Maß selektieren, Makro abfeuern und schon ist der Wert in der Zwischenablage. Falls du das zwischendurch sehen willst die Zeile mit der Msgbox wieder einkommentieren:
Code:
' ********************************************************************** ' * Makro holt vom selektierten Maß den Wert und kopiert ihn mit ' * allen 8 Nachkommastellen in die Zwischenablage. ' * ' * 27.07.2006 Stefan Berlitz (stefan.berlitz@solidworks.cad.de) ' * http://solidworks.cad.de ' * http://swtools.cad.de ' **********************************************************************Dim swApp As Object Dim ModelDoc As Object Dim SelectionMgr As Object Dim DispDim As Object Dim Dimension As Object Dim DimValue As Double Const swSelDIMENSIONS = 14 ' tricksereien um ins Clipboard zu setzen Declare Function GlobalUnlock Lib "kernel32" (ByVal hMem As Long) _ As Long Declare Function GlobalLock Lib "kernel32" (ByVal hMem As Long) _ As Long Declare Function GlobalAlloc Lib "kernel32" (ByVal wFlags As Long, _ ByVal dwBytes As Long) As Long Declare Function CloseClipboard Lib "User32" () As Long Declare Function OpenClipboard Lib "User32" (ByVal hwnd As Long) _ As Long Declare Function EmptyClipboard Lib "User32" () As Long Declare Function lstrcpy Lib "kernel32" (ByVal lpString1 As Any, _ ByVal lpString2 As Any) As Long Declare Function SetClipboardData Lib "User32" (ByVal wFormat _ As Long, ByVal hMem As Long) As Long Public Const GHND = &H42 Public Const CF_TEXT = 1 Public Const MAXSIZE = 4096 Sub main() Set swApp = CreateObject("SldWorks.Application") Set ModelDoc = swApp.ActiveDoc Set SelectionMgr = ModelDoc.SelectionManager ' dann alle selektierten Objekte durchgehen If SelectionMgr.GetSelectedObjectCount <> 1 Then ' Warnmeldung MsgBox "Bitte nur eine einzelne Bemaßung selektieren" Else ' wenn es eine Bemaßung ist If SelectionMgr.GetSelectedObjectType(1) = swSelDIMENSIONS Then ' an die Bemaßung anklinken, auf dem Schirm ist ja eine DisplayDimension ' also erst mal den zugrunde liegenden Parameter holen Set DispDim = SelectionMgr.GetSelectedObject3(1) Set Dimension = DispDim.GetDimension ' den Wert auslesen, API typisch ist der in Metern, also umrechnen ' Umrechnung quick&dirty auf Millimeter DimValue = Dimension.GetSystemValue2("") * 1000 ' Wert anzeigen ' MsgBox "Wert ist: " & DimValue ' und noch in die Zwischenablage kopieren ClipBoard_SetData CStr(DimValue) Else MsgBox "Bitte nur eine einzelne Bemaßung selektieren" End If End If End Sub Function ClipBoard_SetData(MyString As String) ' von http://p2p.wrox.com/topic.asp?TOPIC_ID=15747 Dim hGlobalMemory As Long, lpGlobalMemory As Long Dim hClipMemory As Long, X As Long ' Allocate movable global memory. '------------------------------------------- hGlobalMemory = GlobalAlloc(GHND, Len(MyString) + 1) ' Lock the block to get a far pointer ' to this memory. lpGlobalMemory = GlobalLock(hGlobalMemory) ' Copy the string to this global memory. lpGlobalMemory = lstrcpy(lpGlobalMemory, MyString) ' Unlock the memory. If GlobalUnlock(hGlobalMemory) <> 0 Then MsgBox "Could not unlock memory location. Copy aborted." GoTo ExitHere End If ' Open the Clipboard to copy data to. If OpenClipboard(0&) = 0 Then MsgBox "Could not open the Clipboard. Copy aborted." Exit Function End If ' Clear the Clipboard. X = EmptyClipboard() ' Copy the data to the Clipboard. hClipMemory = SetClipboardData(CF_TEXT, hGlobalMemory) ExitHere: If CloseClipboard() = 0 Then MsgBox "Fehler beim Schließen des Clipboards" End If End Function
Ciao, Stefan ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de Member of CAD.de BOINC Team - | Seti@Home | CPDN | Einstein@Home 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: 27. Jul. 2006 11:31 <-- editieren / zitieren --> Unities abgeben: Nur für G. Dawg
|
G. Dawg Ehrenmitglied V.I.P. h.c. Teamleiter FEM Simulation
Beiträge: 2622 Registriert: 12.07.2004 SolidWorks_2o2o SP3.o Win10_x64, Quadro_P2ooo. VisualStudio_2o19_Pro. FEM: Forge_NxT_HPC, ANSYS_WB. 3D-Printer: Ultimaker_2, Tinker_Gnome.
|
erstellt am: 27. Jul. 2006 11:41 <-- editieren / zitieren --> Unities abgeben:
Danke Euch beiden!!!!!! Ich habe es anschliessen auch selber versucht bin aber immerwieder gescheiter! Dank dem Verwis auf FM20.dll geht nun alles!!!! Code: ' ********************************************************************** ' * Makro holt vom selektierten Maß den Wert und zeigt ihn mit ' * allen 8 Nachkommastellen in einer Inputbox zum einfachen kopieren an. ' * ' * 27.07.2006 Stefan Berlitz (stefan.berlitz@solidworks.cad.de) ' * http://solidworks.cad.de ' * http://swtools.cad.de ' **********************************************************************Dim swApp As Object Dim ModelDoc As Object Dim SelectionMgr As Object Dim DispDim As Object Dim Dimension As Object Dim DimValue As Double Dim oData As DataObject Const swSelDIMENSIONS = 14 Sub main() Set swApp = CreateObject("SldWorks.Application") Set ModelDoc = swApp.ActiveDoc Set SelectionMgr = ModelDoc.SelectionManager Set oData = New DataObject ' dann alle selektierten Objekte durchgehen If SelectionMgr.GetSelectedObjectCount <> 1 Then ' Warnmeldung MsgBox "Bitte nur eine einzelne Bemaßung selektieren" Else ' wenn es eine Bemaßung ist If SelectionMgr.GetSelectedObjectType(1) = swSelDIMENSIONS Then ' an die Bemaßung anklinken, auf dem Schirm ist ja eine DisplayDimension ' also erst mal den zugrunde liegenden Parameter holen Set DispDim = SelectionMgr.GetSelectedObject3(1) Set Dimension = DispDim.GetDimension ' den Wert auslesen, API typisch ist der in Metern, also umrechnen ' Umrechnung quick&dirty auf Millimeter DimValue = Dimension.GetSystemValue2("") * 1000 'InputBox "Wert ist:", "Bemaßungswert kopieren", DimValue ' Verweis auf FM20.dll nötig!!!! ' Kopiert den Wert von DimValue in die Windows Zwischenablage oData.SetText DimValue oData.PutInClipboard Else MsgBox "Bitte nur eine einzelne Bemaßung selektieren" End If End If End Sub
------------------ SolidWorks is my friend... SolidWorks, frieeeend! 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: 27. Jul. 2006 11:43 <-- editieren / zitieren --> Unities abgeben: Nur für G. Dawg
|
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: 27. Jul. 2006 11:47 <-- editieren / zitieren --> Unities abgeben: Nur für G. Dawg
|
VBSpawn Mitglied Programmierer
Beiträge: 514 Registriert: 23.08.2005 Sorgfältige Planung ersetzt niemals pures Glück.
|
erstellt am: 27. Jul. 2006 12:33 <-- editieren / zitieren --> Unities abgeben: Nur für G. Dawg
Holla zusammen, weils so lustig ist und Stefan heute mal den Turbo reingehauen hat, hab ich mal ein kleines 'Dim Klick Tracker Tool' im pure VBA angehangen. - Für alles andere als SWX2k5 müssen die Verweise angepasst werden. entweder: - Drawing öffnen - in Modul1 sub Main ausführen - Bemassungen anklicken. oder: - keine Datei geöffnet - in Modul1 sub Main ausführen - Drawing öffnen - Bemassungen anklicken. wobei der 2. Weg wesentlich lustiger ist ... denn VBA scheint sich ganz normal beendet zu haben ... ohne Aktion -> nicht darauf reinfallen. Öffnet einfach ein drw und schwupps ist die Maske vorhanden. Gruß Micha
------------------ http://classicvb.org/petition/ 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 |
G. Dawg Ehrenmitglied V.I.P. h.c. Teamleiter FEM Simulation
Beiträge: 2622 Registriert: 12.07.2004 SolidWorks_2o2o SP3.o Win10_x64, Quadro_P2ooo. VisualStudio_2o19_Pro. FEM: Forge_NxT_HPC, ANSYS_WB. 3D-Printer: Ultimaker_2, Tinker_Gnome.
|
erstellt am: 27. Jul. 2006 13:42 <-- editieren / zitieren --> Unities abgeben:
Hm! Interessant!!! Das Makro kopiert sogar 13(!!) Stellen nach dem Komma!!! Wenn das Mass 11.1234567890123456789 eingegeben wurde, als ø z.B., dann wird max. 11.12345679 angezeigt. Das Makro aber kopiert diesen Wert: 11.1234567890123!!! Mit wieviel Stellen rechnet eigentlich SolidWorks? ------------------ SolidWorks is my friend... SolidWorks, frieeeend! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
G. Dawg Ehrenmitglied V.I.P. h.c. Teamleiter FEM Simulation
Beiträge: 2622 Registriert: 12.07.2004 SolidWorks_2o2o SP3.o Win10_x64, Quadro_P2ooo. VisualStudio_2o19_Pro. FEM: Forge_NxT_HPC, ANSYS_WB. 3D-Printer: Ultimaker_2, Tinker_Gnome.
|
erstellt am: 27. Jul. 2006 13:44 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von VBSpawn: - Für alles andere als SWX2k5 müssen die Verweise angepasst werden. entweder: - Drawing öffnen - in Modul1 sub Main ausführen - Bemassungen anklicken. oder: - keine Datei geöffnet - in Modul1 sub Main ausführen - Drawing öffnen - Bemassungen anklicken.
Sieht ja toll aus! Aber, ohne zu wissen welche Verweise ich anpassen muss, bin ich hier verloren!! Ich würde gerne sehen, was Dein Progi genau macht...! ------------------ SolidWorks is my friend... SolidWorks, frieeeend! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
VBSpawn Mitglied Programmierer
Beiträge: 514 Registriert: 23.08.2005 Sorgfältige Planung ersetzt niemals pures Glück.
|
erstellt am: 27. Jul. 2006 13:56 <-- editieren / zitieren --> Unities abgeben: Nur für G. Dawg
Zitat: Original erstellt von G. Dawg: Sieht ja toll aus! Aber, ohne zu wissen welche Verweise ich anpassen muss, bin ich hier verloren!! Ich würde gerne sehen, was Dein Progi genau macht...!
Siehe Bild. Falls du kein SWX2k5 hast dann den deiner SWX Version entsprechenden Verweis einbinden. Gruß Micha ------------------ http://classicvb.org/petition/ 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 |
G. Dawg Ehrenmitglied V.I.P. h.c. Teamleiter FEM Simulation
Beiträge: 2622 Registriert: 12.07.2004 SolidWorks_2o2o SP3.o Win10_x64, Quadro_P2ooo. VisualStudio_2o19_Pro. FEM: Forge_NxT_HPC, ANSYS_WB. 3D-Printer: Ultimaker_2, Tinker_Gnome.
|
erstellt am: 27. Jul. 2006 14:07 <-- editieren / zitieren --> Unities abgeben:
Ah! Wer lesen kann ist klar im Vorteil!!! DRAWING!!!! In einem Part macht das Makro genau NICHTS!! Das Makro funkt also auch im SWX2006 ------------------ SolidWorks is my friend... SolidWorks, frieeeend! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
VBSpawn Mitglied Programmierer
Beiträge: 514 Registriert: 23.08.2005 Sorgfältige Planung ersetzt niemals pures Glück.
|
erstellt am: 27. Jul. 2006 14:33 <-- editieren / zitieren --> Unities abgeben: Nur für G. Dawg
Zitat: Original erstellt von G. Dawg: Ah! Wer lesen kann ist klar im Vorteil!!! DRAWING!!!! In einem Part macht das Makro genau NICHTS!! Das Makro funkt also auch im SWX2006
<grinz> Dachte wir sind bei drw's naja hier nocheinmal ne Anpassung da gehts dann auch mit asm & prt's Gruß Micha
------------------ http://classicvb.org/petition/ 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 |
G. Dawg Ehrenmitglied V.I.P. h.c. Teamleiter FEM Simulation
Beiträge: 2622 Registriert: 12.07.2004 SolidWorks_2o2o SP3.o Win10_x64, Quadro_P2ooo. VisualStudio_2o19_Pro. FEM: Forge_NxT_HPC, ANSYS_WB. 3D-Printer: Ultimaker_2, Tinker_Gnome.
|
erstellt am: 27. Jul. 2006 14:52 <-- editieren / zitieren --> Unities abgeben:
|
G. Dawg Ehrenmitglied V.I.P. h.c. Teamleiter FEM Simulation
Beiträge: 2622 Registriert: 12.07.2004 SolidWorks_2o2o SP3.o Win10_x64, Quadro_P2ooo. VisualStudio_2o19_Pro. FEM: Forge_NxT_HPC, ANSYS_WB. 3D-Printer: Ultimaker_2, Tinker_Gnome.
|
erstellt am: 03. Aug. 2006 08:49 <-- editieren / zitieren --> Unities abgeben:
ACHTUNG!!!!!!!DIESES MAKRO FUNKTIONIERT NICHT BEI WINKELBEMASSUNG!!! Da dreht das Marko ein wenig durch und liefert einen falschen Wert! Auch Dein Makro, VBSpawn, liefert den selben falschen Wert! Ein Winkelmass von 60.56365° liefert den Wert 1057.03521955285! Was soll denn das?! Fehlt da noch eine Umrechnugn??? ------------------ SolidWorks is my friend... SolidWorks, frieeeend! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
VBSpawn Mitglied Programmierer
Beiträge: 514 Registriert: 23.08.2005 Sorgfältige Planung ersetzt niemals pures Glück.
|
erstellt am: 03. Aug. 2006 09:07 <-- editieren / zitieren --> Unities abgeben: Nur für G. Dawg
Zitat: Original erstellt von G. Dawg: ACHTUNG!!!!!!! Da dreht das Marko ein wenig durch und liefert einen falschen Wert! Auch Dein Makro, VBSpawn, liefert den selben falschen Wert!
Hi und Moin moin, Klaro sind ja auch 2x die gleichen Quellen Zitat: Original erstellt von Stefan Kopiert im Code: ' den Wert auslesen, API typisch ist der in Metern, also umrechnen ' Umrechnung quick&dirty auf Millimeter DimValue = Dimension.GetSystemValue2("") * 1000
ggf musst du dort noch was Anpassen. Gruß Micha
------------------ http://classicvb.org/petition/ 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 |
KMassler Ehrenmitglied V.I.P. h.c. CAD Admin + Mädchen für Alles...
Beiträge: 2675 Registriert: 06.11.2000 SolidWorks Start 1999 ** CSWP 01/2008 ** ------------------ Zuletzt beruflich: - SWX2020 SP5; - SAP/PLM+ECTR; - DriveWorks Pro; - Programmierung: VBA, aktuell Visual Studio 2022/VB.Net ------------------ ab 2024 (privat): Onshape und anderes
|
erstellt am: 03. Aug. 2006 10:12 <-- editieren / zitieren --> Unities abgeben: Nur für G. Dawg
Zitat: Original erstellt von Lutz Federbusch: Ich denke, damit geht es etwas einfacher...
Mpf...man sollte den Thread immer zu Ende lesen (ich meine mich!), bevor man sich an die Arbeit macht. Auf diesen Link bin ich auch gestoßen und mein Makro sieht genauso aus wie das nachfolgende von G. Dawg. Die anderen Clipboard-Lösungen von Stefan und Micha sind zwar akademisch interessant, aber mir viel zu kompliziert.
------------------ Klaus www.al-ko.com >> Unbedingt hier klicken!!! << privat... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
VBSpawn Mitglied Programmierer
Beiträge: 514 Registriert: 23.08.2005 Sorgfältige Planung ersetzt niemals pures Glück.
|
erstellt am: 03. Aug. 2006 11:18 <-- editieren / zitieren --> Unities abgeben: Nur für G. Dawg
Zitat: Original erstellt von KMassler: [QUOTE]Original erstellt von Lutz Federbusch: Ich denke, damit geht es etwas einfacher...
Die anderen Clipboard-Lösungen von Stefan und Micha sind zwar akademisch interessant, aber mir viel zu kompliziert. [/QUOTE] Hallo Klaus, Ich kann dir dabei zustimmen das ein einbinden vom DataObject einfacher ist, allerdings hat man als Entwickler immer das Problem das man auf die Verwendeten Controls / dll's ect aufpassen muss. Eine Software, sei es auch nur ein VBA Makro, braucht auf jedem PC die gleichen Komponenten & Verweise ... was wiederrum bei der Installation auf anderen PC mitbeachtet werden muss... indem man die verwendeten ctrls/dll in der entsprechenden Version mitliefert. Um diesen Aufwand gering zuhalten.... verwende ich 'wo es geht' die WinAPI Calls sodass ich nur noch nach OS unterscheiden brauche... und der 'end user' hat keine Probleme mit regsvr / verweisen usw.... Gruß Micha
------------------ http://classicvb.org/petition/ 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 |
KMassler Ehrenmitglied V.I.P. h.c. CAD Admin + Mädchen für Alles...
Beiträge: 2675 Registriert: 06.11.2000 SolidWorks Start 1999 ** CSWP 01/2008 ** ------------------ Zuletzt beruflich: - SWX2020 SP5; - SAP/PLM+ECTR; - DriveWorks Pro; - Programmierung: VBA, aktuell Visual Studio 2022/VB.Net ------------------ ab 2024 (privat): Onshape und anderes
|
erstellt am: 03. Aug. 2006 12:50 <-- editieren / zitieren --> Unities abgeben: Nur für G. Dawg
|
VBSpawn Mitglied Programmierer
Beiträge: 514 Registriert: 23.08.2005 Sorgfältige Planung ersetzt niemals pures Glück.
|
erstellt am: 03. Aug. 2006 13:14 <-- editieren / zitieren --> Unities abgeben: Nur für G. Dawg
Hi Klaus, sicherlich geht mein bsp total übers Ziel hinaus, allerdings sind gerade solche kleinen Beispiele super hilfreich wenn man sich etwas damit beschäftigt. Gruß Micha ------------------ http://classicvb.org/petition/ 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 |
G. Dawg Ehrenmitglied V.I.P. h.c. Teamleiter FEM Simulation
Beiträge: 2622 Registriert: 12.07.2004 SolidWorks_2o2o SP3.o Win10_x64, Quadro_P2ooo. VisualStudio_2o19_Pro. FEM: Forge_NxT_HPC, ANSYS_WB. 3D-Printer: Ultimaker_2, Tinker_Gnome.
|
erstellt am: 04. Aug. 2006 08:37 <-- editieren / zitieren --> Unities abgeben:
Tadaaaa!!! So! Nun erkennt das tolle Progi auch Winkelbemassungen und rechnet diese auch korrekt um!!! [edit] PI etwas genauer Runden auf 12 Stellen; Danke an HernyV! -> Da mache Masse auf den letzten paar (1 bis 3) Stellen abweichen! Aus welchem Grund auch immer! [/edit]
Code: ' ' ********************************************************************** ' * Makro holt vom selektierten Maß den Wert und zeigt ihn mit ' * allen 8 Nachkommastellen in einer Inputbox zum einfachen kopieren an. ' * ' * 27.07.2006 Stefan Berlitz (stefan.berlitz@solidworks.cad.de) ' * http://solidworks.cad.de ' * http://swtools.cad.de ' ********************************************************************** ' * Richtiges erkennen von Winkelbemassungen und deren Umrechnung. ' * Winkel Umrechnung von Radiant in Grad ' * 4. August 2006, G. Fürer ' **********************************************************************Dim swApp As Object Dim ModelDoc As Object Dim SelectionMgr As Object Dim DispDim As Object Dim Dimension As Object Dim DimValue As Double Dim oData As DataObject Const swSelDIMENSIONS = 14 Function GetDimFactor _ ( _ swApp As SldWorks.SldWorks, _ swModel As SldWorks.ModelDoc2, _ swDim As SldWorks.Dimension _ ) As Double Const PI As Double = 3.1415926535898 Const LEN_FACTOR As Double = 1000# Const ANG_FACTOR As Double = 180# / PI Select Case swDim.GetType Case swDimensionParamTypeDoubleLinear GetDimFactor = LEN_FACTOR Case swDimensionParamTypeDoubleAngular GetDimFactor = ANG_FACTOR Case Else Debug.Assert False End Select End Function Sub main() Set swApp = CreateObject("SldWorks.Application") Set ModelDoc = swApp.ActiveDoc Set SelectionMgr = ModelDoc.SelectionManager Set oData = New DataObject ' dann alle selektierten Objekte durchgehen If SelectionMgr.GetSelectedObjectCount <> 1 Then ' Warnmeldung MsgBox "Bitte (nur) eine Bemaßung selektieren" Else ' wenn es eine Bemaßung ist If SelectionMgr.GetSelectedObjectType(1) = swSelDIMENSIONS Then ' an die Bemaßung anklinken, auf dem Schirm ist ja eine DisplayDimension ' also erst mal den zugrunde liegenden Parameter holen Set DispDim = SelectionMgr.GetSelectedObject3(1) Set Dimension = DispDim.GetDimension ' den Wert auslesen, API typisch ist der in Metern, also umrechnen ' Umrechnung quick&dirty auf Millimeter nDimFactor = GetDimFactor(swApp, ModelDoc, Dimension) DimValue = Dimension.GetSystemValue2("") * nDimFactor DimValue = Round(DimValue * 100000000000#, 0) / 100000000000# 'InputBox "Wert ist:", "Bemaßungswert kopieren", DimValue ' Verweis auf FM20.dll nötig!!!! ' Kopiert den Wert von DimValue in die Windows Zwischenablage 'strText = DimValue oData.SetText DimValue oData.PutInClipboard Else MsgBox "Bitte (nur) eine Bemaßung selektieren" End If End If End Sub
------------------ SolidWorks is my friend... SolidWorks, frieeeend! [Diese Nachricht wurde von G. Dawg am 04. Aug. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
SolidWemo Mitglied Technischer Produktdesigner
Beiträge: 3 Registriert: 25.09.2023
|
erstellt am: 04. Okt. 2023 14:31 <-- editieren / zitieren --> Unities abgeben: Nur für G. Dawg
|
Jan Mitglied Dipl.-Ing.
Beiträge: 1271 Registriert: 23.12.2000 Dienstl. Lenovo 64GB, nVidia, Win10, SW 2019, 2021 u. 2022 Priv. Dell M7740 16GB, nVidia , Win10, SW 2012, SW 2021 und SW 2022 Prem.
|
erstellt am: 05. Okt. 2023 08:13 <-- editieren / zitieren --> Unities abgeben: Nur für G. Dawg
|