Makro-Export einer DXF-Zeichnungsansicht

Hallo

Ich habe in verschiedenen Foren (Französisch und Englisch) gesucht, aber ich kann die Antwort nicht finden.

Wir verwenden den DXF-Export für einen Lieferanten, der ausschließlich Laserschneiden durchführt, aber wir möchten eine "Gravur" mit der Plannummer hinzufügen. Zu diesem Zweck verlangt unser Lieferant, dass der zu gravierende Text in der DXF-Datei unter einer "T"-Schicht vorhanden ist (für seine Maschine ist es automatisch).
Im Moment wird folgende Methode verwendet:

  1. Erstellen einer Zeichnungsansicht in der gewünschten Ausrichtung
  2. Benennen Sie die Säge in "DXF" um.
  3. Es wurde eine Notiz hinzugefügt, die sich auf die benutzerdefinierte Eigenschaft "Plan-Nr." bezieht.
  4. Die Auswahl der Ansicht erfolgt über "Ansichten speichern unter" ganz unten im FeatureManager
  5. Mit der Option "Benutzerdefinierte Projektion" verwenden wir eine Projektionsdatei, die es uns ermöglicht, die Linien des Modells in einer "0"-Ebene und die Notizen in einer "T"-Ebene zu speichern

Im Moment funktioniert es wirklich gut.
Abgesehen davon, dass ich es gerne mit einem Makro automatisieren würde.
In dem Wissen, dass wir bereits ein Makro haben, um die Zeichnung im PDF + DWG-Format und das Modell im STEP-Format zu speichern (durch Hinzufügen der Hinweise im Dateinamen).
Das Ziel wäre, ein Makro für die DXF zu haben und es in unser bestehendes Makro zu integrieren, indem wir sagen: "Wenn die "DXF"-Ansicht existiert, dann speichern wir sie im DXF-Format mit den Projektionsoptionen usw. usw.

Erscheint es Ihnen machbar? Das Problem ist, dass ich keine Spur eines Makros finden kann, um eine VUE im DXF-Format aufzuzeichnen.

Hallo
Ich schlage vor, Sie kopieren die Ansicht in ein neues temporäres Blatt (mit einem leeren flachen Hintergrund wird es nicht in der DXF-Datei angezeigt)

Hallo;
Sie können die anderen Ansichten ausblenden, in DXF speichern und dann wieder anzeigen, z.B.:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Diagnostics;
//using System.Windows.Forms;

using SolidWorks.Interop.sldworks;
using SolidWorks.Interop.swconst;


namespace Macro1
{
    public partial class SolidWorksMacro
    {
        public void Main()
        {
            ModelDoc2 swDoc = ((ModelDoc2)(swApp.ActiveDoc));
            ModelDocExtension swDocExt = swDoc.Extension;
            DrawingDoc swDrawing = (DrawingDoc)swDoc;
            View swView = (View)swDrawing.GetFirstView();
            swView = (View)swView.GetNextView();
            bool boolstatus;
            int errors = 0;
            int warnings = 0;
            List<string> nomDesVuesAMontrer = new List<string>();


            //cacher les vues non désirées
            while (swView != null)
            {
                if (swView.Name != "DXF")
                {
                    if(swView.GetVisible() == true)
                    {
                        swView.SetVisible(false, false);
                        nomDesVuesAMontrer.Add(swView.Name);
                    }
                    
                }
                swView = (View)swView.GetNextView();
            }

            //enregistrer en DXF
            AdvancedSaveAsOptions options_save = (AdvancedSaveAsOptions)swDocExt.GetAdvancedSaveAsOptions(0);
            boolstatus = swDocExt.SaveAs3(@"C:\Users\enregistrement_DXF.dxf", 0, 0, null, options_save, ref errors, ref warnings);

            //montrer les vues comme avant
            foreach (string nom in nomDesVuesAMontrer)
            {
                swDrawing.ActivateView(nom);
                swView = (View)swDrawing.ActiveDrawingView;
                swView.SetVisible(true, false);                
            }
            return;
        }
        public SldWorks swApp;

    }
}

Hallo
Unten ist eine Ergänzung zu meinem Vorschlag

Sub export_view()
    Dim st As Boolean
    st = swmodel.Extension.SelectByID2("DXF", "DRAWINGVIEW", 0, 0, 0, False, 0, Nothing, 0)
    If st Then
        swmodel.EditCopy
        swdraw.NewSheet4 "tmp", 0, 13, 1, 1, False, "", 0, 0, "", 0, 0, 0, 0, 0, 0
        swmodel.Paste
        'save as dxf
        'delete temp_sheet
    Else
    End If
End Sub

<< möchte ich darauf hinweisen, dass die mit der Ansicht verknüpften Bohrtabellen ebenfalls kopiert werden, um je nach Bedarf verwaltet zu werden>>