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?
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!
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
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
Dank je wel fgirard,
Ik heb je macro aangepast om voor ons te werken en te doen wat ik wilde.
Dank je wel, dan!
Met deze oplossing zou het moeten werken
http://forum.solidagora.com/viewtopic.php?f=28&t=101&p=14689&e=14689
@+;-)
Hallo
Ik wilde de Fgirard-macro gebruiken, maar de link werkt niet.
Fgirard, kun je het alsjeblieft terugzetten?
Bedankt