Wie rufe ich die aktive Skala eines Blattes ab?

Hallo

Trotz meiner diversen Recherchen im Forum und im Internet werde ich nicht fündig... Daher meine Frage

Der Zweck meines Makros besteht darin, eine Solidworks-Zeichnung in verschiedenen Formaten für die Archivierung zu speichern, insbesondere im DXF-Format für das Laserschneiden.

Um sicherzustellen, dass mein DXF gut ist, möchte ich sicherstellen, dass der Maßstab 1:1 ist. Wie macht man das?

Ich habe herausgefunden, wie ich die Skala ändern kann, aber ich möchte den Benutzer warnen, dass seine Skala geändert werden muss, um Fehler zu vermeiden.

Um genauer zu sein, würde ich gerne einen Test machen wie: Wenn Maßstab = 1:1, dann weiter oder stopp

Danke für Ihre Hilfe! Die VBA-Programmierung unter solidwoks ist noch nicht sehr gut lesbar...

Guten Abend

Normalerweise durch die Suche nach swView. ScaleRatio in der API helfen, sollte es den Bedarf erfüllen.

Hallo

Wenn Sie das DXF aus dem 3D generieren, kommt es immer bei Maßstab 1 heraus, und wenn Sie Ihr DXF aus dem MEP herausnehmen, wird der Maßstab manchmal durcheinander gebracht...

Ansonsten haben wir eine tolle Ergänzung, um die Dateien als Laserschneiddateien auszugeben:

https://www.youtube.com/watch?v=q9CZfkYpyE0

http://www.topsworks.de/en/why-topsworks/topsworks-and-solidworks/

http://solidworks.fr/sw/products/details.htm?productid=4329

2 „Gefällt mir“

Hallo

Hier ist ein Makro, das reibungslos funktioniert. Es läuft mit 3D und gibt immer einen DXF-Wert im Maßstab 1:1 aus

Bei uns jeden Tag im Einsatz und kein Problem.

A++

 


saveas_dxf.swp
3 „Gefällt mir“

Hallo

Sie müssen dann die Skala anheben, wenn sie von 1:1 abweicht, dann stoppen Sie in C# es sieht so aus:

            ModelDoc2 swDoc = (ModelDoc2)Programm.swapp. ActiveDoc;
            DrawingDoc swDraw;
            Blatt swSheet;
            swDraw = ((DrawingDoc)(swDoc));
            swSheet = (Blatt)swDraw. GetCurrentSheet();
            Objekt vSheetProps = null;
            doppelte Papiergröße = 0;
            doppeltes TemplateIn = 0;
            doppelte Skala1 = 0;
            doppelte Skala2 = 0;
            double FirstAngle = 0;
            doppelte Breite = 0;
            doppelte Höhe = 0;

            vSheetProps = swSheet. GetProperties();
            double[] formatProp = (doppelt[])vSheetProps;
            
            PaperSize = System. Mathematik. Runde(formatProp[0]);
            VorlageIn = formatProp[1];
            Skala1 = formatProp[2];
            Skala2 = formatProp[3];
            FirstAngle = formatProp[4];
            Breite = FormatProp[5];
            Höhe = FormatProp[6];
            
            if ((int)Scale1 != 1 | (int) Skala2 != 1)
            {
                Rückgabe;
            }

Alles, was ich noch tun muss, ist, es in VBA zu übersetzen, eine Sprache, die ich nicht beherrsche, also lasse ich es Ihnen überlassen.

Herzliche Grüße

Hallo

 

Indem ich Teile der Antwort aus jedem Ihrer Kommentare genommen habe, habe ich es geschafft, mein Problem zu lösen und Ihnen zu danken!

 

Der entsprechende Teil der Côde lautet wie folgt:

Dimmen swApp               als Objekt
Dimmen des Teils                als SldWorks.ModelDoc2
Dim swView              As SldWorks.View
Dim swModExt            As SldWorks.ModelDocExtension
Dim swPathDir           als Zeichenfolge
Dim swPath              als Zeichenfolge
Dim echf                As Variant 'Die Blattwaage wird im Bruchformat gespeichert (a:b)
Dim echV1               As Variant 'Der Maßstab von Ansicht 1 wird im Bruchformat (a:b) gespeichert
Dim Rep                 als Variante 'Für MsgBox Storage

Unter-RegistrierungDXFPDF()

Legen Sie swApp = Application.SldWorks fest
Set Part = swApp.ActiveDoc


"------------ Abrufen von Informationen (1)
    Festlegen von swModExt = Part.Extension
    Set prop = swModExt.CustomPropertyManager("")

    Set swView = Part.GetFirstView ' wobei die erste Ansicht die
    echf = swView.ScaleRatio ' Skalenabruf
    Set swView = swView.GetNextView 'Wechsel zur ersten Ansicht
    echV1 = swView.ScaleRatio ' Skalieren Abrufen
    Rückgewinnung von Münzen
    Festlegen von swModel = swView.ReferencedDocument
    Legen Sie swModExt = swModel.Extension fest
   
"------------ Sicherheitskontrollen
    '--Überprüfung des Maßstabs des Blattes--
    Wenn echf(0) <> »1« oder echf(1) »1« <>, dann
        Rep = MsgBox("Achtung, der Maßstab des Blattes ist " & echf(0) & ":" & echf(1) & vbCrLf & _
        "Möchten Sie fortfahren?", vbJaNein, "Dxf Pdf Aufnahme")
        Wenn Rep = vbNo, dann Sub beenden
    Ende, wenn
    "--Überprüfung des Maßstabs der Aussicht--
    Wenn echV1(0) <> "1" oder echV1(1) "1" <>, dann
        Rep = MsgBox("Achtung, der Maßstab der Ansicht ist " & echV1(0) & ":" & echV1(1) & vbCrLf & _
        "Möchten Sie fortfahren?", vbJaNein, "Dxf Pdf Aufnahme")
        Wenn Rep = vbNo, dann Sub beenden
    Ende, wenn

Ende Sub