Macro export d'une vue de mise en plan en dxf

Bonjour,

J’ai bien chercher dans différent forum (français et anglais) mais je ne trouves pas la réponse.

Nous utilisons l’export en DXF pour un fournisseur qui fait exclusivement de la découpe laser, mais nous voulons ajouter une « gravure » cotenant le N° du plan. Pour ça, notre fournisseur demande que le texte a graver soit présent dans le dxf sous un calque « T » (pour sa machine est automatique).
Pour le moment la méthode employé est la suivante :

  1. Création d’une vue de mise en plan dans l’orientation souhaité
  2. Renommer la vu en « DXF »
  3. Ajout d’une note lié a la propriété personalisé « N°Plan »
  4. Sélectionner la vu est faire « enregistrer les vue sous » tout en bas du FeatureManager
  5. Avec les option de projection personalisée, on utilise un fichier de projection qui nous permet d’enregistrer les lignes du modele dans un calque « 0 » et les notes dans un calque « T »

Pour le moment ça marche vraiment bien.
Sauf que, j’aimerais bien automatiser ça avec une macro.
En sachant qu’on a dejà une macro pour enregistrer la mise en plan au format PDF + DWG, et le model au format STEP (en ajoutant les indice dans le nom des fichier).
Le but serait d’avoir une macro pour les dxf et de l’intégrer a notre macro existante en disant "si le vu « DXF » existe, alors on l’enregistre au format DXF en utilisant les option de projection etc etc.

Est ce que ça vous semble jouable? Le probleme c’est que je ne trouve aucune trace d’une macro pour enregistrer une VUE au format DXF.

Bonjour
Je vous propose de copier la vue vers une nouvelle feuille temporaire (avec un fond plan vide ça va pas apparaître dans le dxf)

Bonjour;
Tu peux cacher les autres vues, enregistrer en DXF puis les montrer à nouveau par exemple :

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;

    }
}

Bonjour
Ci dessous un complément de ma proposition

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

<< je précise que les tables de perçage liées à la vue sont aussi copiées, à gérer selon besoin >>