| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
Autor
|
Thema: Per Makro keine Block-Skalierung = 1 möglich (691 mal gelesen)
|
mechanikuss Mitglied Konstruktion Anlagen+Werkzeug+Maschinen

 Beiträge: 97 Registriert: 04.06.2002 MS-Windows 10 Pro MS-Office Pro Plus 2019 DS-Solidworks 2019 Pro
|
erstellt am: 23. Dez. 2022 13:49 <-- editieren / zitieren --> Unities abgeben:         
Hallo Gemeinde, Noch eine Frage an die Spezialisten unter euch: Kennt jemand das Problem, dass bei einer als "double" deklarierten Variable der Wert "1.0" sofort in "1#" umgewandelt wird? Laut diesem Beitrag heißt es nur: "1# tells the compiler to assign a double" https://stackoverflow.com/questions/23358650/excel-vba-1-0-becomes-1 Schön und gut, nur habe ich somit keine Chance per Makro einem Block die Skalierung = 1 zu geben. Also im VBA-Editor wird "swBlockInst.Scale2 = 1.0 " sofort in "swBlockInst.Scale2 = 1# " umgewandelt. Es gibt beim ausführen zwar keinen Error, aber die "Eins Punkt Null" wird einfach nicht übernommen, alle anderen Werte wie "1.1" oder "2.0" usw. sehr wohl funktionieren. Ich habe mir heute schon schier einen "Wolf" ausprobiert, um einen Work-Around zu finden - Aber ohne Erfolg. Hat jemand eine Idee? Gruß Fred
------------------ Lieber Gruß vom mechanikuss Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nahe Ehrenmitglied
    
 Beiträge: 1724 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: 23. Dez. 2022 14:58 <-- editieren / zitieren --> Unities abgeben:          Nur für mechanikuss
|
mechanikuss Mitglied Konstruktion Anlagen+Werkzeug+Maschinen

 Beiträge: 97 Registriert: 04.06.2002 MS-Windows 10 Pro MS-Office Pro Plus 2019 DS-Solidworks 2019 Pro
|
erstellt am: 24. Dez. 2022 09:31 <-- editieren / zitieren --> Unities abgeben:         
Hallo Heinz, Es gibt keinen Unterschied. Weder 1.0 noch 1 wird umgesetzt. Probiere es selbst, falls du die Zeit und Möglichkeit hast. Ich vermute einen Bug. Ich behelfe mich derzeit mit Eingabe von 1.001, was nicht gerade die elegante Weise ist, aber so geht es (annähernd). Gruß Fred
------------------ Lieber Gruß vom mechanikuss [Diese Nachricht wurde von mechanikuss am 24. Dez. 2022 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
deckelmaho Mitglied Konstrukteur
 
 Beiträge: 215 Registriert: 03.03.2020 SolidWorks 2021 SP5.1 Windows 10 64bit Office 2019
|
erstellt am: 26. Dez. 2022 09:54 <-- editieren / zitieren --> Unities abgeben:          Nur für mechanikuss
Hallo Fred, ich arbeite im SWXHelper auch mit Blöcken und konnte dabei keinen Bug feststellen. Vielleicht ist wichtig zu wissen, dass die Skalierung der Blöcke in Abhängigkeit des Maßstabes stehen. Wenn ich die Blöcke auf dem Blatt einfüge, hole ich mir vorher die Scales des Blattes Code:
vSheetProps = swSheet.GetProperties scalefactor = vSheetProps(3) / vSheetProps(2)
Für Blöcke in Ansichten wirst du das separat machen müssen, da diese nicht zwangsläufig dem Blattmaßstab entsprechen müssen. Wie gesagt ich habe weder selber einen Fehler festgestellt, noch hat einer der Nutzer einen gemeldet. Vielleicht hilft dir das ja weiter... Beste Grüße Kevin ------------------
HOMEPAGE | SWXTools.de - SWXHelper für SOLIDWORKS
KONTAKT | support@swxtools.de
FACEBOOK | facebook.com/SWXHelper
TWITTER | twitter.com/SWXTools Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mechanikuss Mitglied Konstruktion Anlagen+Werkzeug+Maschinen

 Beiträge: 97 Registriert: 04.06.2002 MS-Windows 10 Pro MS-Office Pro Plus 2019 DS-Solidworks 2019 Pro
|
erstellt am: 27. Dez. 2022 15:37 <-- editieren / zitieren --> Unities abgeben:         
Hallo Kevin, Danke für den Hinweis. Genau deshalb möchte ich auch die im Zeichnungsmaßstab entsprechend erstellten Blöcke noch vor dem abspeichern auf Scale=1 stellen. Sonst befänden sich irgendwann lauter unterschieliche Skalierungen in meiner Block-Bibliothek. Das wäre nicht schön. Hat zum Beispiel die Zeichnung den Maßstab 1:25, dann bekommt ein Block nach dem erstellen Scale=0.04. Und per VBA kann ich nun Scale auf alle möglichen Werte ändern, nur nicht exaxt 1.000 egal ob mit oder ohne Nullen hinterm Komma. Gruß Fred ------------------ Lieber Gruß vom mechanikuss Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
deckelmaho Mitglied Konstrukteur
 
 Beiträge: 215 Registriert: 03.03.2020 SolidWorks 2021 SP5.1 Windows 10 64bit Office 2019
|
erstellt am: 28. Dez. 2022 11:36 <-- editieren / zitieren --> Unities abgeben:          Nur für mechanikuss
|
mechanikuss Mitglied Konstruktion Anlagen+Werkzeug+Maschinen

 Beiträge: 97 Registriert: 04.06.2002 MS-Windows 10 Pro MS-Office Pro Plus 2019 DS-Solidworks 2019 Pro
|
erstellt am: 28. Dez. 2022 18:07 <-- editieren / zitieren --> Unities abgeben:         
Hi Kevin, Hier mein Test-Makro: '*************************************************************************************************************** ' Mit diesem Makro soll eine Blockdefinition, unabhängig vom aktuellen Zeichnungsmaßstab, ' mit Scale=1 in eine Datei gespeichert werden, damit beim nächsten Einfügen auch wieder Scale=1 vogegeben wird Option Explicit Dim swApp As SldWorks.SldWorks Dim swDoc As SldWorks.ModelDoc2 Dim swSelMgr As SldWorks.SelectionMgr Dim swBlockInst As SldWorks.SketchBlockInstance Dim swBlockDef As SldWorks.SketchBlockDefinition Dim swBlockInstName As Variant Dim swModel As Object Dim swDraw As Object Dim SwSketchMgr As Object Dim vBlockDef As Variant Dim BlkPath As String Dim BlkFile As String Dim BlkPathFile As String Dim boolStatus As Boolean Dim MyScale As Double Sub fctSaveFile() 'Initialisierung Set swApp = Application.SldWorks Set swDoc = swApp.ActiveDoc Set swModel = swApp.ActiveDoc Set swDraw = swDoc Set swSelMgr = swDoc.SelectionManager 'Start Skizzenmanager Set SwSketchMgr = swDoc.SketchManager vBlockDef = SwSketchMgr.GetSketchBlockDefinitions 'Nur Wenn Blöcke vorhanden If Not IsEmpty(vBlockDef) Then 'Name der selektierten Block-Instanz holen Set swSelMgr = swDoc.SelectionManager Set swBlockInst = swSelMgr.GetSelectedObject6(1, 0) Set swBlockDef = swBlockInst.Definition swBlockInstName = swBlockInst.Name Debug.Print "Block-Instanz: " & swBlockInstName frmAttEdit.txtBlockInst.Text = swBlockInstName 'Daeipfad festlegen BlkPath = "Z:\CAD_SWX-Daten\Daten_CBC\_CBC-Tools\CBC_Blocks\000_AutoBlock" BlkFile = "TestBlock" 'Block-Definition in Datei speichern If Dir(BlkPath, vbDirectory) <> "" Then 'DateiPfad generieren BlkPathFile = BlkPath & "\" & BlkFile & ".sldblk" Debug.Print "Datei-Pfad: " & BlkPathFile 'Aktuelle Skalierung merken MyScale = swBlockInst.Scale2 Debug.Print "Block-Skalierung aktuell: " & swBlockInst.Scale2 'Skalierung auf 1.0 setzen swBlockInst.Scale2 = 1.0001 Debug.Print "Block-Skalierung neu: " & swBlockInst.Scale2 'Datei speichern boolStatus = swBlockDef.Save(BlkPathFile) 'Skalierung zurücksetzen swBlockInst.Scale2 = MyScale Debug.Print "Block-Skalierung restore: " & swBlockInst.Scale2 Else MsgBox "Path not valid!" Exit Sub End If End If End Sub '*************************************************************************************************************** Im Anhang findest Du die Debug.Print-Ausgaben von zwei Test-Läufen mit unterschiedlichen Werten. Grüße Fred ------------------ Lieber Gruß vom mechanikuss Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Christian_W Ehrenmitglied V.I.P. h.c. Konstrukteur (Dipl-Ing)
     
 Beiträge: 2998 Registriert: 04.04.2001 SWX2021sp5 WIN10 proAlpha6.2e00/calinkV9 (Tactonworks) (Medusa7, NesCAD2010, solidEdge19) CSWP 12/2015
|
erstellt am: 30. Dez. 2022 02:01 <-- editieren / zitieren --> Unities abgeben:          Nur für mechanikuss
Hi, ich hätt ja erwartet, dass Skale nur die Instanz betrifft, nicht die Definition. Aber bei mir reagiert es genauso, wenn ich das von Hand mache. Hast du einen kompetenten Reseller, den du drauf ansetzen kannst? ich glaub wir haben im Makro zum Block einfügen ein skale drin. muss ich aber nächstes Jahr mal nachgucken... Gruß, Christian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mechanikuss Mitglied Konstruktion Anlagen+Werkzeug+Maschinen

 Beiträge: 97 Registriert: 04.06.2002 MS-Windows 10 Pro MS-Office Pro Plus 2019 DS-Solidworks 2019 Pro
|
erstellt am: 30. Dez. 2022 11:43 <-- editieren / zitieren --> Unities abgeben:         
Hallo Christian, Danke, für deine Rückmeldung. Tatsächlich ist dieses Verhalten auf allen unserer CAD-Stationen reproduzierbar. Scheint tatsächlich ein Bug zu sein. Leider sind wir schon seit einiger Zeit aus der Wartungs raus. Somit haben wir keinen Ansproch mehr auf Support. Der Grund war, dass wir wegen unserer Schwesterdivisionen auf CREO umsteigen mussten. Solidworks 2019 war die letzte Version. Nur noch eine Abteilung darf Solidworks ausnahmsweise und nur im 2D-Bereich für Kreilauf-Schemata anwenden. Gruß Fred ------------------ Lieber Gruß vom mechanikuss Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Christian_W Ehrenmitglied V.I.P. h.c. Konstrukteur (Dipl-Ing)
     
 Beiträge: 2998 Registriert: 04.04.2001 SWX2021sp5 WIN10 proAlpha6.2e00/calinkV9 (Tactonworks) (Medusa7, NesCAD2010, solidEdge19) CSWP 12/2015
|
erstellt am: 04. Jan. 2023 14:42 <-- editieren / zitieren --> Unities abgeben:          Nur für mechanikuss
Zitat: Original erstellt von mechanikuss: ... darf Solidworks ausnahmsweise und nur im 2D-Bereich ...
Hallo Fred, das nenn ich mal eine sinnvolle Entscheidung, 2D ist ja eine der größten Stärken von SolidWorks. deshalb sollte es ja eigentlich SheetWorks heißen, glaub ich ...  Ich muss das nochmal zu Hause probieren - da hatte ich den Effekt wie von dir beschrieben. Hier in der Firma nicht ... Was ich bei Blöcken immer etwas sperrig finde, ist das Vorschaubild, das in der sldblk-Datei gespeichert wird. da weiß ich vorher nie so recht, wie es aussieht ... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mechanikuss Mitglied Konstruktion Anlagen+Werkzeug+Maschinen

 Beiträge: 97 Registriert: 04.06.2002 MS-Windows 10 Pro MS-Office Pro Plus 2019 DS-Solidworks 2019 Pro
|
erstellt am: 10. Jan. 2023 15:01 <-- editieren / zitieren --> Unities abgeben:         
Hi Christian, zum Thema "SheetWorks" und "Block-Vorschaubild" kann ich auch nur lachen. Die Skizzen-Blöcke waren schon immer die ungeliebten Stiefkinder in der Familie. Konntest du schon feststellen, warum sich deine beiden CAD-Stationen unterschiedlich verhalten? Gruß Fred ------------------ Lieber Gruß vom mechanikuss Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Christian_W Ehrenmitglied V.I.P. h.c. Konstrukteur (Dipl-Ing)
     
 Beiträge: 2998 Registriert: 04.04.2001 SWX2021sp5 WIN10 proAlpha6.2e00/calinkV9 (Tactonworks) (Medusa7, NesCAD2010, solidEdge19) CSWP 12/2015
|
erstellt am: 17. Jan. 2023 10:06 <-- editieren / zitieren --> Unities abgeben:          Nur für mechanikuss
Hallo, in der Firma hab ich es einfach mit bestehenden Blöcken auf einer Zeichnung probiert. und die blieben ziemlich unberührt vom Blattmaßstab. Wenn ich aber (wie zu Hause) ein paar neue Linien zu einem Block zusammenfasse, dann spielt der Maßstab direkt in den Skalierungsfaktor ... Und wenn ich beim Erstellen den Blattmaßstab 1:1 habe, dann bleibt in dem Block auch der Skalierungsfaktor 1 - egal was ich dann mit dem Blattmaßstab mache. Entsprechend, wenn ich da 0,2 drin habe ... --> erstellen in 1:1 mit möglichst wenig drumherum wegen Vorschau. Aber ich will ja auch gerade keine Blibliothek erstellen ... Gruß, Christian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |