Macro-export van een dxf-tekeningweergave

Hallo

Ik heb op verschillende fora gezocht (Frans en Engels) maar ik kan het antwoord niet vinden.

We gebruiken DXF-export voor een leverancier die uitsluitend lasersnijden doet, maar we willen een "gravure" toevoegen met het plannummer. Om dit te doen, eist onze leverancier dat de te graveren tekst aanwezig is in de dxf onder een "T"-laag (want zijn machine is automatisch).
Op dit moment is de gebruikte methode als volgt:

  1. Een tekeningaanzicht maken in de gewenste richting
  2. Hernoem de zaag naar "DXF"
  3. Er is een opmerking toegevoegd met betrekking tot de aangepaste eigenschap 'Abonnementnr.'
  4. Het selecteren van de weergave is "weergaven opslaan als" helemaal onderaan de FeatureManager
  5. Met de aangepaste projectieoptie gebruiken we een projectiebestand waarmee we de lijnen van het model kunnen opslaan in een "0"-laag en de noten in een "T"-laag

Op dit moment werkt het heel goed.
Behalve dat, ik zou het graag willen automatiseren met een macro.
Wetende dat we al een macro hebben om de tekening op te slaan in PDF + DWG-formaat en het model in STEP-formaat (door de aanwijzingen in de bestandsnaam toe te voegen).
Het doel zou zijn om een macro voor de dxf te hebben en deze te integreren in onze bestaande macro door te zeggen "als de "DXF" -weergave bestaat, dan slaan we deze op in DXF-formaat met behulp van de projectie-opties enz. enz.

Lijkt het je haalbaar? Het probleem is dat ik geen spoor van een macro kan vinden om een VUE in DXF-formaat op te nemen.

Hallo
Ik stel voor dat je de weergave kopieert naar een nieuw tijdelijk blad (met een lege platte achtergrond zal het niet verschijnen in de dxf)

Hallo;
U kunt de andere weergaven verbergen, opslaan in DXF en ze vervolgens opnieuw weergeven, bijvoorbeeld:

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
Hieronder een aanvulling op mijn voorstel

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

<< wil ik erop wijzen dat de boortabellen die aan de weergave zijn gekoppeld, ook worden gekopieerd, om te worden beheerd volgens de behoefte >>