Macro-opname in PDF en DXF in een externe map

Hallo allemaal en een gelukkig nieuwjaar 2014!

 

Ik ben op zoek naar een macro die het volgende mogelijk maakt:

  • Sla een SW-opstelling op in DXF en PDF
  • in een map op het netwerk die niet de locatie van het . SLDDRW
  • Voeg de aangepaste eigenschap "Revisie" toe aan het einde van de bestandsnaam
  • Klik op een pictogram om de hele bewerking uit te voeren

 

De link (http://forum.solidagora.com/macro-api-solidworks-enregistrer-pdf-dxf-x-t101.html) die Gt22 voorstelde in de vraag (http://www.lynkoa.com/forum/3d/macro-d-enregistrement-en-pdf#) is een mooie belofte, maar er is geen macro...

Het hulpprogramma BatchConverter is goed, maar een beetje zwaarder (ik wil gewoon op een pictogram klikken)

 

Dus, kan iemand mij helpen?

 

Bij voorbaat dank,

Thomas

Hallo

In de solidagora-link is aangegeven dat u alleen maar contact hoeft op te nemen met de persoon die het bericht heeft geplaatst om de macro te ontvangen. Dus daar begin ik maar mee;) 

In dezelfde geest als BATCHCONVERTER is er INTEGRATIE (vooral als je de naam van het uiteindelijke bestand wilt wijzigen door de eigenschap Revisie toe te voegen, want het lijkt me niet dat Batch weet hoe het moet).

 

U moet de "DEV" bij Axemble vragen of hij een "macro" voor u kan maken vanuit SW die INTEGRATIE start met uw conversie + wijziging van de uiteindelijke bestandsinstellingen.

 

Persoonlijk hebben we, voordat we overstapten op EPDM, BATCHCONVERTER gebruikt om Europarlementariërs automatisch om te zetten naar dxf, pdf en edrw in een andere directory dan die van de BEM (zodat ze bijvoorbeeld toegankelijk zouden zijn voor productie).

We lanceerden elke avond het hulpprogramma BATCHCONVERTER dat rekening hield met alle tekeningen die gedurende de dag werden gemaakt of gewijzigd (u beheert dit via de filters op de data). Het voordeel is dat er bij deze methode geen overzicht is, in tegenstelling tot uw macroknop die menselijke tussenkomst vereist.

2 likes

Als ik me niet vergis, moet je het aan Lucas Prieur vragen, hij weet veel over macro, maar ik weet niet of hij beschikbaar is?

1 like

Hallo en gelukkig nieuwjaar allemaal,

 

Inderdaad, ik heb een soortgelijke macro gemaakt (PDF & DWG).

Ik was van plan om deze op Lynkoa te posten, maar ik heb het niet gedaan vanwege tijdgebrek. Voordat ik het plaatste, wilde ik het vereenvoudigen en alle regels één voor één becommentariëren voor meer leesbaarheid voor de neofieten van VBA-programmering.

 

Heb je de basis in VBA? Heb je al een basis voor deze macro of begin je helemaal opnieuw?

 

Ik heb een tutorial gemaakt voor "Opslaan als" voor SolidWorks (die eenvoudiger is en voor elke regel wordt becommentarieerd) die je hier kunt vinden:

http://www.lynkoa.com/tutos/3d/macro-enregistrer-sous-avec-solidworks

 

Je hebt al wat leads. Ik ben momenteel op vakantie tot de 6e, dus ik zal de macro op dat moment overzetten (maar houd er rekening mee dat deze specifiek is voor ons bedrijf en veel aanpassingswerk vereist).

Hallo en gelukkig nieuwjaar,

Kunt u aangeven wanneer u zegt:

  • in een map op het netwerk die niet de locatie van het . SLDDRW

Wil je het altijd op één plek?

 

 

We hebben onze solidworks-bestanden (onderdelen, samenstellingen en tekeningen) in een "Technische" map.

We hebben een "database" van plannen in DXF en PDF (doorzoekbaar voor iedereen) in een andere map.

 

Dus NEE, dit zijn 2 verschillende plekken!

Maar is het een enkele map voor alle PDF's? Of is het voor elke bestelling/deal/machine een andere map?

Hoi @ ThomasM

 

Ik denk dat de belofte niet alleen mooi is

want als ik me niet vergis, heb je deze genoemde macro kunnen herstellen

 

Heb je het geprobeerd en komt het overeen met je echte behoefte?

 

Het is wel zo dat hoe duidelijker de vraag, hoe gerichter het antwoord is (Lucas) ;-)

 

@+ ;-)

Het is inderdaad een enkele map voor alle PDF's. (en DXF)

Nee, op dit moment werkt het niet.

 

Ik heb eigenlijk de macro op het "Solidagora" forum.

Maar het geeft me een foutmelding.

Een probleem dat verband houdt met het feit dat ik in 64 bits zit. (voor zover ik begrijp)

 

Ik probeer vooruit te komen om het te laten werken.

 

En ik zou het ook willen vereenvoudigen, zodat het door op het macropictogram te drukken doet wat ik het vraag, zonder een mappad in te voeren of de extensie te controleren...

 

  

Voor de 64 bits is het enige probleem dat ik ken dat wanneer je de macro start, het dialoogvenster niet verschijnt.
Met een "kleine" ALT + TAB open je het dialoogvenster  (al die longPtr en PrtSafe zijn niet nodig...) 

 

Dit antwoord is geen antwoord op uw vraag

Geduldig zelf, de meeste mensen zijn met eindejaarsverlof, het gaat komen

@+ ;-)

Kun je de macro hier als tekstbestand plaatsen?

Ik kan het aanpassen om het pad op te nemen dat je wilt als je het me geeft (in UNC is het beter, zoals: "\\SERVER\Design Office\SolidWorks Plans\PDF Plans\")

 

Als je de fout hebt en je klikt op debuggage, op welke regel kom je dan?

Zie deze link

 

https://forum.solidworks.com/thread/66010

 

Bijlage

 

@+ ;-)


file_save_as_pdf__dwg.swp_.zip

Zie ook deze link

 

http://forum.solidagora.com/topic1758.html

 

@+ ;-)

Dit is wat ik heb kunnen doen door rechts en links te herstellen.

 

Optie Expliciete
Openbare Enum swDocumentTypes_e
    swDocNONE = 0       ' Vroeger TYPE_NONE
    swDocPART = 1       ' Vroeger TYPE_PART
    swDocASSEMBLY = 2   ' Vroeger TYPE_ASSEMBLY
    swDocDRAWING = 3    ' Vroeger TYPE_DRAWING
 
Einde Enum
Dim swApp als object
Dim swModel als ModelDoc2
Dim sPathName als tekenreeks
Dim sReference als tekenreeks
Dim sSaveName als tekenreeks
Dim longstatus Zo lang
Dim myRev als snaar
Sub hoofd()
Stel swApp = Toepassing.SldWorks in
Stel swModel = swApp.ActiveDoc in

Als swModel niets is, dan
    MsgBox ("Geen open document")
ElseIf swModel.GetType <> 3 Dan
    MsgBox ("Dit is geen tekening")
Anders
   sPathName = swModel.GetPathName' haalt de weergavenaam van het huidige document op
   sReference = Mid(sPathName, InStrRev(sPathName, "\") + 1) 'Haalt alles op na de laatste \
   sReference = Left(sReference, Len(sReference) - 7) 'De 6 tekens die overeenkomen met de bestandsextensie en de .
   sPathName = Left(sPathName, InStrRev(sPathName, "\")) 'Haalt pad op zonder bestandsnaam

'myRev = swModel.CustomInfo2("", "Hint") 'Haalt de hint op uit de documenteigenschappen
myRev = swModel.GetCustomInfoValue("", "Index")

   longstatus = swModel.SaveAs3("X:\" + sReference + myRev + ".PDF", 0, 0)
   longstatus = swModel.SaveAs3("X:\" + sReference + myRev + ". DXF", 0, 0)
    
Einde als


Einde Sub

 

 

 

Laatste kleine probleempje:

Ik kan de eigenschap "Hint" die aan het onderdeel is gekoppeld niet krijgen.

swModel.CustomInfo2("", "Index") en swModel.GetCustomInfoValue("", "Index") retourneren niets naar mij.

 

Wat moet ik schrijven om de eigenschap "Index" op te halen?

 

En dus kan niemand me vertellen hoe ik de aangepaste eigenschap "Review" kan ophalen die "verankerd" is in de kamer?

 

Het zou geweldig zijn, omdat het me in staat zou stellen om mijn vraag volledig te beantwoorden!

 

Bij voorbaat dank wel!

Ik denk dat je op het andere forum een verzoek om uitleg hebt, zie de bijgevoegde tekst

 

door annwn » di 7 jan 2014 14:25

Wauw... Wachten... Ik begrijp niet alles!
Welke wijziging van de code heb je aangebracht?

Kun je screenshots maken van je foutmeldingen?

 

@+ ;-)

Hallo

 

Ik heb een vergelijkbare macro die een aangepaste eigenschap ophaalt en deze aan de bestandsnaam toevoegt.

 

Het doet wat je wilt, slaat een tekening op in PDF en DXF met de toevoeging van de eigenschap "index"

 

Het enige wat u hoeft te doen is de bestemmingspaden te wijzigen.

 

Als je hulp nodig hebt, aarzel dan niet


dxf__pdf_bon_pour_fab.swp
1 like

Als u een aangepaste eigenschap wilt ophalen, moet u de volgende opdracht gebruiken:

Get4-methode (ICustomPropertyManager)

 

Hieronder vindt u het voorbeeld van de API-hulp:

 

Dim swApp als SldWorks.SldWorks

Dim swModel als ModelDoc2

Dim swModelDocExt als ModelDocExtension

Dim swCustProp als CustomPropertyManager

Dim val Als String Dim valout Als String

Dim bool als Booleaanse

 

Sub hoofd()

 

Stel swApp = Toepassing.SldWorks in

Stel swModel = swApp in. ActiveDoc

Stel swModelDocExt = swModel in. Extensie

 

' Haal de aangepaste eigenschapsgegevens op

Stel swCustProp = swModelDocExt. CustomPropertyManager("")

bool = swCustProp. Get4("Property_Name", Onwaar, val, valout)

 

Debug.Print "Waarde: " & val

Debug.Print "Geëvalueerde waarde: " & valout

Debug.Print "Up-to-date data: " & bool

 

Einde Sub