| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Schriftköpfe aktualisieren (2647 mal gelesen)
|
de-os Mitglied CAD-Admin
Beiträge: 34 Registriert: 15.02.2006
|
erstellt am: 18. Mai. 2007 11:22 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich möchte gerne auf Knopfdruck (per VBA) die Schriftköpfe aktualisieren. Das stelle ich mir so vor, dass in ein aktuell geöffnetes Dokument die Schriftköpfe aus einer Vorlagendatei hineinkopiert / bzw. diese aktualisiert werden. Die Vorlagendatei liegt an einem bestimmten Ort auf dem Server. Was ich nicht hinbekomme ist Folgendes: Ich weiß nicht genau, wie ich im VBA Objekte einer Datei geladen bekomme, die nicht geöffnet ist. Es wird doch bestimmt möglich sein, dass VBA bspw. einen Schriftkopf aus einer bestimmten Datei in den Speicher holt, die ich dann per VBA verarbeiten kann. Wäre nett, wenn Ihr mir helfen könntet. ------------------ Mit freundlichem Glückauf de-os Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
SEHER Mitglied Systemanalytiker
Beiträge: 1203 Registriert: 13.03.2001 Inventor 2 bis 2022 häufig wechselnder Rechnerverkehr
|
erstellt am: 18. Mai. 2007 13:44 <-- editieren / zitieren --> Unities abgeben: Nur für de-os
|
de-os Mitglied CAD-Admin
Beiträge: 34 Registriert: 15.02.2006
|
erstellt am: 21. Mai. 2007 09:04 <-- editieren / zitieren --> Unities abgeben:
Hallo Seher, die Funktion ist mir zwar bekannt, ich weiß auch, dass sie funktioniert. Ich möchte allerdings dieses per VBA realisieren, da unsere User einfach nur einen Knopf drücken sollen. Wäre nett, wenn mir jemand einen Tipp geben könnte, wie das funktioniert. ------------------ Mit freundlichem Glückauf de-os Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rtend12 Mitglied Dipl.-Ing. (FH) Maschinenbau / Konstrukteur
Beiträge: 436 Registriert: 21.07.2004 Catia V5 (R16SP5, B18SP5) VB.Net 2003
|
erstellt am: 21. Mai. 2007 12:15 <-- editieren / zitieren --> Unities abgeben: Nur für de-os
1. aktuelle Datei ermitteln dim odoc as drawingdocument Set odoc = ThisApplication.ActiveDocument 2. die Datei, die das neue Schriftfeld enthält öffnen dim newdoc as drawingdocument Set newdoc = ThisApplication.Documents.Open(hier den Pfad, False) 3. Schriftfeld in Speicher holen: Dim oTitleDef As TitleBlockDefinition Set oTitleDef = oSymDoc.TitleBlockDefinitions(hier Name des Schriftfeldes) 4. Schriftfeld in aktulle Zeichnung kopieren: Call oTitleDef.CopyTo(odoc, True) Wenn das neue und das alte Schriftfeld den gleichen Namen haben, dann wird das alte durch das neue ersetzt. Gruß Reinhard Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
de-os Mitglied CAD-Admin
Beiträge: 34 Registriert: 15.02.2006
|
erstellt am: 21. Mai. 2007 12:21 <-- editieren / zitieren --> Unities abgeben:
|
de-os Mitglied CAD-Admin
Beiträge: 34 Registriert: 15.02.2006 AutoCAD Mechanical, Inventor Professional, Vault Manufacturing
|
erstellt am: 21. Mai. 2007 14:36 <-- editieren / zitieren --> Unities abgeben:
Wollte mich nur bedanken. Funktioniert perfekt. Hier dann mein endgültiger Code: Public Sub Alle_Schriftfelder_holen() Dim oApp As Application Set oApp = ThisApplication Dim oDoc As Document Set oDoc = oApp.ActiveDocument Dim newDoc As Document Set newDoc = oApp.Documents.Open("c:\temp1.idw", False) Dim oTitleDef As TitleBlockDefinition Dim iZahl As Integer For iZahl = newDoc.TitleBlockDefinitions.Count To 1 Step -1 Set oTitleDef = newDoc.TitleBlockDefinitions.Item(iZahl) Call oTitleDef.CopyTo(oDoc, True) Next iZahl End Sub
------------------ Mit freundlichem Glückauf de-os Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
EKW Mitglied Dipl.-Ing. Maschinenbau & IWE|Entwicklung & Konstruktion von Baumaschinenwerkzeugen
Beiträge: 174 Registriert: 12.09.2011
|
erstellt am: 01. Apr. 2014 11:23 <-- editieren / zitieren --> Unities abgeben: Nur für de-os
Zitat: Original erstellt von de-os:
Public Sub Alle_Schriftfelder_holen() Dim oApp As Application Set oApp = ThisApplication Dim oDoc As Document Set oDoc = oApp.ActiveDocument Dim newDoc As Document Set newDoc = oApp.Documents.Open("c:\temp1.idw", False) Dim oTitleDef As TitleBlockDefinition Dim iZahl As Integer For iZahl = newDoc.TitleBlockDefinitions.Count To 1 Step -1 Set oTitleDef = newDoc.TitleBlockDefinitions.Item(iZahl) Call oTitleDef.CopyTo(oDoc, True) Next iZahl End Sub
Funktioniert wirklich super! Interessant wäre hier noch wie man eventuell noch bestehende/vorhandene Schriftköpfe, ausser den Neu eingefügten und ersetzten/überschriebenen/aktualsierten Schriftköpfen, löschen kann?
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2166 Registriert: 15.11.2006 Windows 10 x64, AIP 2022
|
erstellt am: 01. Apr. 2014 20:46 <-- editieren / zitieren --> Unities abgeben: Nur für de-os
Hallo Du könntest in der Zielzeichnung vorab alle nicht verwendeten Schriftfelder löschen. Code: Public Sub Alle_ungenutzten_Schriftfelder_löschen() Dim oApp As Application Set oApp = ThisApplication Dim oDoc As Document Set oDoc = oApp.ActiveDocumentDim oTitleDef As TitleBlockDefinition For each oTitleDef in oDoc.TitleBlockDefinitions If oTitleDef.InUse = False Then oTitleDef.Delete End If Nex End Sub
------------------ MfG Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
EKW Mitglied Dipl.-Ing. Maschinenbau & IWE|Entwicklung & Konstruktion von Baumaschinenwerkzeugen
Beiträge: 174 Registriert: 12.09.2011
|
erstellt am: 02. Apr. 2014 11:50 <-- editieren / zitieren --> Unities abgeben: Nur für de-os
Danke! Das sieht vielversprechend aus! EDIT: Er bricht leider in der Zeile "If oTitleDef.InUse = False Then" (Kommentar False=False) ab wenn eines der Schriftfelder in einem Blatt vorkommt. Wird keines verwendet läuft das Programm durch (ist ja nicht im Sinne des Vorhabens). Viele Grüße,
[Diese Nachricht wurde von EKW am 02. Apr. 2014 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RolandD Mitglied
Beiträge: 533 Registriert: 07.01.2005 i7-9700k 32GB DDR4-RAM Nvidia RTX 2060 SSD 970 m.2 Win10-64 (21H2) AIP 2020.3 Dell U3417W
|
erstellt am: 02. Apr. 2014 18:20 <-- editieren / zitieren --> Unities abgeben: Nur für de-os
Hallo, doppelte Negierung ?? --> Edit sagt: es muss IsReferenced heißen. Dann läuft's (kann das DIN-Schriftfeld nicht gelöscht werden?) funktioniert Code: If Not oTitleDef.IsReferenced Then oTitleDef.Delete End If
------------------ Gruß Roland
[Diese Nachricht wurde von RolandD am 02. Apr. 2014 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Ingenieur (m/w/d) Automatisierung | Menschen und Technologien zu verbinden, den Perfect Match für unsere Kunden zu gestalten, immer die richtigen Expert:innen für die jeweilige Herausforderung zu finden - das ist unser Anspruch bei FERCHAU und dafür suchen wir dich: als ambitionierte:n Kolleg:in, der:die wie wir Technologien auf die nächste Stufe bringen möchte. Wir realisieren spannende Projekte für namhafte Kunden in den Technologiebereichen ... | Anzeige ansehen | Automatisierungstechnik |
|
EKW Mitglied Dipl.-Ing. Maschinenbau & IWE|Entwicklung & Konstruktion von Baumaschinenwerkzeugen
Beiträge: 174 Registriert: 12.09.2011
|
erstellt am: 03. Apr. 2014 10:45 <-- editieren / zitieren --> Unities abgeben: Nur für de-os
|