Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Inventor VBA
  DWG in Unterordner abspeichern

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  DWG in Unterordner abspeichern (1537 mal gelesen)
Xaigon
Mitglied



Sehen Sie sich das Profil von Xaigon an!   Senden Sie eine Private Message an Xaigon  Schreiben Sie einen Gästebucheintrag für Xaigon

Beiträge: 15
Registriert: 16.08.2012

erstellt am: 17. Aug. 2012 15:17    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,

versuche gerade Im Inventor 2012, DWGs automatisch mit einem Button im aktuellen Projektordner abzuspeichern (eigentlich im Projektunterordner), dies funktioniert auch schon im aktuellen Projektordner. Mit der Funktion (oDoc.FullFileName) übergiebt er immer den ganzen Pfad z.B.: C:\Arbeitsbereich\Projekte\Bilten\ZNG-Nr.idw kann also nicht mehr in den DWG ordner im Verzeichnis wechseln.
Kann mir jemand helfen, das DWG-File in den Unterordner abzuspeichern?

Hier der Code den ich bis jetzt fabriziert habe:

Code:
Public Sub CreateDWG()
    On Error Resume Next
    If ThisApplication.ActiveDocument.DocumentType <> kDrawingDocumentObject Then
        Exit Sub
    End If
 
  Dim Pfad As String
    Pfad = CurDir & "\"

    If Dir(Pfad & "\DWG", vbDirectory) = "DWG" Then 'erstellt den Ordner wenn es ihn noch nicht gibt
        'MsgBox "Ordner ''DWG'' ist vorhanden!"
        GoTo Sprung
    Else
        MkDir "DWG"
        MsgBox "Ordner ''DWG'' wurde in folgendem Pfad angelegt:  " & Pfad
    End If

Sprung:
 
    Dim oDoc As Inventor.DrawingDocument
    Set oDoc = ThisApplication.ActiveDocument
    If oDoc.FullFileName = "" Then
        MsgBox "Bitte zuerst die Zeichnung speichern...  "
        Exit Sub
    End If
        oDoc.SaveAs Replace(oDoc.FullFileName, Right(oDoc.FullFileName, 3), "DWG"), True
   
    If Err.Number = 0 Then
        MsgBox "Die Datei:" & vbCrLf & vbCrLf & Replace(oDoc.FullFileName, Right(oDoc.FullFileName, 3), "DWG") & vbCrLf & vbCrLf & "wurde erfolgreich gespeichert"
        FileSystemObject.CopyFile "oDoc.FullFileName", Pfad & "\DWG"
    Else
        MsgBox "Fehler: " & Err.Description
    End If
   
End Sub


Danke im Voraus für euere Hilfe!!!

------------------
Greets

Xaigon

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

lbcad
Ehrenmitglied V.I.P. h.c.
Dipl.-Ing. Maschinenbau und CAD-Trainer



Sehen Sie sich das Profil von lbcad an!   Senden Sie eine Private Message an Lothar Boekels  Schreiben Sie einen Gästebucheintrag für Lothar Boekels

Beiträge: 3794
Registriert: 15.02.2001

DELL Precision 7520 Win10Pro-64
Inventor mit Vault Professional 2022
---------------------
Während man es aufschiebt,
verrinnt das Leben.
Lucius Annaeus Seneca
(ca. 4 v. Chr - 65 n. Chr.)

erstellt am: 18. Aug. 2012 09:09    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Xaigon 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Xaigon:

Code:

    ...
    Pfad = CurDir & "\"

    If Dir(Pfad & "\DWG",
    ...



Hier bastelst Du Dir einen Pfad mit 2 hintereinander folgenden Backslash.

------------------
Gruß Lothar Boekels

-----------------------------------------------------
Wir unterstützen die Arbeit der
- Rettungshundestaffel des DRK in Viersen
Das könnt Ihr auch tun.

[Diese Nachricht wurde von lbcad am 18. Aug. 2012 editiert.]

[Diese Nachricht wurde von lbcad am 18. Aug. 2012 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Xaigon
Mitglied



Sehen Sie sich das Profil von Xaigon an!   Senden Sie eine Private Message an Xaigon  Schreiben Sie einen Gästebucheintrag für Xaigon

Beiträge: 15
Registriert: 16.08.2012

erstellt am: 20. Aug. 2012 12:37    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Lothar,

heisst dass, das ich ein Backslash weglassen kann?

Weisst du auch nicht wie ich das dwg.File in den Unterordner ablegen kann?

Gruss Xaigon

------------------
Greets

Xaigon

[Diese Nachricht wurde von Xaigon am 20. Aug. 2012 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Xaigon
Mitglied



Sehen Sie sich das Profil von Xaigon an!   Senden Sie eine Private Message an Xaigon  Schreiben Sie einen Gästebucheintrag für Xaigon

Beiträge: 15
Registriert: 16.08.2012

Autodesk Inventor 2014
Autodesk Vault Professional 2014

erstellt am: 20. Aug. 2012 13:09    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo nochmals,

sollte sowas in der Art haben: nur das idw. kopieren und als dwg abspeichern:

Code:

Sub Verschieben()

FileCopy "C:\_LEB_Arbeitsbereich\Projekte\PRO-000374 Silos\KIBAG BILTEN\LEB-105851.idw", "C:\_LEB_Arbeitsbereich\Projekte\PRO-000374 Silos\KIBAG BILTEN\DWG\LEB-105851.idw"

End Sub


------------------
Greets

Xaigon

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik




Sehen Sie sich das Profil von rkauskh an!   Senden Sie eine Private Message an rkauskh  Schreiben Sie einen Gästebucheintrag für rkauskh

Beiträge: 2166
Registriert: 15.11.2006

Windows 10 x64, AIP 2022

erstellt am: 20. Aug. 2012 13:34    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Xaigon 10 Unities + Antwort hilfreich

Hallo

Dann mußt du den Pfad halt zerlegen, den Unterordner einfügen und wieder zusammensetzen:

Code:
Private Sub namesplit()

Dim oDrawDoc As DrawingDocument
Set oDrawDoc = ThisApplication.ActiveDocument

Dim oFileName As String
oFileName = oDrawDoc.FullDocumentName

Dim oArray() As String
oArray = Split(oFileName, "\")

Dim sName As String
Dim i As Integer
sName = oArray(LBound(oArray))
For i = 1 To UBound(oArray) - 1
    sName = sName & "\" & oArray(i)
Next
sName = sName & "\dwg\" & Replace(oArray(UBound(oArray)), "idw", "dwg")

End Sub


------------------
MfG
Ralf

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Xaigon
Mitglied



Sehen Sie sich das Profil von Xaigon an!   Senden Sie eine Private Message an Xaigon  Schreiben Sie einen Gästebucheintrag für Xaigon

Beiträge: 15
Registriert: 16.08.2012

erstellt am: 20. Aug. 2012 14:08    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Ralf,

danke für deinen schnellen Tip, aber kannst du mir mal den code erklären hab noch nie mit arrays gearbeitet!

Danke

------------------
Greets

Xaigon

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik




Sehen Sie sich das Profil von rkauskh an!   Senden Sie eine Private Message an rkauskh  Schreiben Sie einen Gästebucheintrag für rkauskh

Beiträge: 2166
Registriert: 15.11.2006

Windows 10 x64, AIP 2022

erstellt am: 20. Aug. 2012 14:47    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Xaigon 10 Unities + Antwort hilfreich

Hallo

Was ein Array ist weißt du aber?
Im Groben:

Code:
Split(oFileName, "\")

Zerlegt einen String anhand des Trennzeichens "\" in einzelne Strings, das Trennzeichen selbst geht dabei verloren und füllt ein Array mit den Schnipseln. Das Array ist indiziert und schaut so aus:

[0],[C:]
[1],[Verzeichnis1]
[2],[Verzeichnis2]
[3],[Verzeichnis3]
[4],[Verzeichnis4]
usw.

Code:
sName = oArray(LBound(oArray))

gibt die untere Grenze (LowerBound) des Arrays als Index (im obigen Beispiel "0") zurück. Man könnte auch direkt mit
Code:
oArray(0)

auf die erste Zeile zugreifen. Die Zählung von Arrays kann aber auch bei 1, statt 0 beginnen, daher ist diese Variante sicherer.
sName hat jetzt den Inhalt "C:". Hab ich nur aus den folgenden Schleife heraus genommen, da dort nach dem ersten Durchlauf sName den Wert "\C:" hätte.

Code:
For i = 1 To UBound(oArray) - 1
    sName = sName & "\" & oArray(i)
Next

Ein schönes Beispiel für inkonsequente Programmierung. Was hab ich oben zum Thema Arrayindizierung gesagt? Genau, kann auch bei 1 beginnen. Also müßte doch der Schnipsel eigentlich heißen:

Code:
For i = LBound(oArray) + 1 To UBound(oArray) - 1
    sName = sName & "\" & oArray(i)
Next

Naja, sind wir mal nicht so. Die Schleife holt nur der Reihe nach die einzelnen Segmente aus dem Array und setzt sie wieder zu einem String zusammen. Den letzten Teil (er enthält den Dateinamen mit Endung) lassen wir erstmal weg.

Code:
sName = sName & "\dwg\" & Replace(oArray(UBound(oArray)), "idw", "dwg")

An den Pfad in sName hängen wir per Verkettung einfach das gewünschte Unterverzeichnis "\dwg\" dran. Den zweiten Teil muss man sich gedanklich von innen nach außen in Teilaufgaben zerlegen.
Code:
oArray(UBound(oArray))

... holt den Dateinamen samt Endung aus dem letzten Index des Arrays
Code:
Replace(oArray(UBound(oArray)), "idw", "dwg")

... ersetzt in dem String, den die innere Funktion liefert, die Zeichenkette "idw" durch "dwg".

------------------
MfG
Ralf

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Xaigon
Mitglied



Sehen Sie sich das Profil von Xaigon an!   Senden Sie eine Private Message an Xaigon  Schreiben Sie einen Gästebucheintrag für Xaigon

Beiträge: 15
Registriert: 16.08.2012

erstellt am: 20. Aug. 2012 16:59    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Vielen Dank, nun funktioniert es einwandfrei!!

------------------
Greets

Xaigon

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz