| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY WIRD VON NVIDIA ZUM HÄNDLER DES JAHRES GEWÄHLT, eine Pressemitteilung
|
Autor
|
Thema: idw zu Modell öffnen, alternativ neu anlegen (3271 / mal gelesen)
|
Roland Schröder Ehrenmitglied V.I.P. h.c. Dr.-Ing. Maschinenbau, Entwicklung & Konstruktion von Spezialmaschinen
Beiträge: 13438 Registriert: 02.04.2004 AIP2013SP2.2 XPproSP2 MS-IntelliMouse-Optical SpacePilot DellM4600 2,13GHz 2GB FxGo1400 1920x1200 am Dock Dell2711
|
erstellt am: 30. Sep. 2016 18:44 <-- editieren / zitieren --> Unities abgeben:
Moin! Ich habe seit Langem das untenstehende, mit Eurer Hilfe erstellte Makro in Gebrauch, das es mir ermöglicht, vom Modell direkt in die zugehörige idw zu springen. Das würde ich gern wie folgt erweitern: Wenn ich auf die Meldung zum Schluss gelange, dass eine zugehörige, also gleichnamige idw im gleichen Verzeichnis nicht existiert, ist es meistens so, dass ich die tatsächlich noch erstellen muss. Dafür würde ich dort gern eine entsprechende Option hinzufügen. Ist das möglich, und kann mir vielleicht jemand die nötige Zauberformel dazu verraten? Code:
Public Sub OpenDrawing() Set oDoc = ThisApplication.ActiveDocument odocname = oDoc.FullFileName If odocname = "" Then MsgBox "Bitte Modell erst speichern!" Exit Sub End If pfad = Left(oDoc.FullFileName, InStrRev(odocname, "\")) dateiname = Mid(odocname, InStrRev(odocname, "\") + 1) dateiname = Left(dateiname, Len(dateiname) - 4) dateiname = pfad & dateiname & ".idw" Set fs = CreateObject("Scripting.FileSystemObject") If fs.fileexists(dateiname) = True Then ThisApplication.Documents.Open (dateiname) Else MsgBox "Keine gleichnamige idw im selben Verzeichnis vorhanden." End If End Sub
------------------ Roland www.Das-Entwicklungsbuero.de It's not the hammer - it's the way you hit! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RolandD Mitglied
Beiträge: 559 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: 01. Okt. 2016 15:41 <-- editieren / zitieren --> Unities abgeben: Nur für Roland Schröder
Hallo Roland, du kannst im ELSE-Zweig folgendes einfügen: Code: Dim byWert As Byte byWert = MsgBox("IDW erstellen? JA / NEIN", vbYesNoCancel, "IDW nicht vorhanden") If (byWert = vbCancel) Or (byWert = vbNo) Then Exit Sub If byWert = vbYes Then 'JA = neue IDW 'IDW erstellen Dim sTemplate As String 'statt Norm.idw hier deine Vorlage einsetzen sTemplate = ThisApplication.DesignProjectManager.ActiveDesignProject.TemplatesPath & "Norm.idw" Dim oNewDrawDoc As DrawingDocument Set oNewDrawDoc = ThisApplication.Documents.Add(DocumentTypeEnum.kDrawingDocumentObject, sTemplate) Dim oSheet As Sheet Set oSheet = oNewDrawDoc.ActiveSheet End If 'byWert = vbNo
Ich habe die Funktion OpenIDW um 2 Funktionen erweitert: (siehe Anhang) - der gleiche Aufruf aus der IDW öffnet das IPT bzw. IAM der ersten Referenz der IDW - Der Aufruf aus einem in der IAM geöffneten Teil öffnet die IDW des Teils, nicht der IAM Das Makro auf Taste Z funktioniert super - viel besser, als das Rechtsklick-Menü
------------------ Gruß Roland Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Roland Schröder Ehrenmitglied V.I.P. h.c. Dr.-Ing. Maschinenbau, Entwicklung & Konstruktion von Spezialmaschinen
Beiträge: 13438 Registriert: 02.04.2004 AIP2013SP2.2 XPproSP2 MS-IntelliMouse-Optical SpacePilot DellM4600 2,13GHz 2GB FxGo1400 1920x1200 am Dock Dell2711
|
erstellt am: 02. Okt. 2016 17:32 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von RolandD: ...um 2 Funktionen erweitert: (siehe Anhang) - der gleiche Aufruf aus der IDW öffnet das IPT bzw. IAM der ersten Referenz der IDW - Der Aufruf aus einem in der IAM geöffneten Teil öffnet die IDW des Teils, nicht der IAM
Ah, super, Danke! Ein "Gegen-Makro" habe ich auch schon genauso lange in Gebrauch. Das habe ich aber getrennt angelegt, so dass ich zwei verschiedene Icons* habe, was mir besser gefällt. Mit der Tastatur arbeite ich im CAD nur wenig, da ich nur zwei Hände habe, dafür um so mehr mit dem "Blümchen-Menü", wo die unterschiedlichen Bilder meiner visuellen Orientierung entgegenkommen. * Ich weiß, dass man das auch anders erreichen kann. Werde mich dann mal näher mit Deinem Code beschäftigen. ------------------ Roland www.Das-Entwicklungsbuero.de It's not the hammer - it's the way you hit! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Roland Schröder Ehrenmitglied V.I.P. h.c. Dr.-Ing. Maschinenbau, Entwicklung & Konstruktion von Spezialmaschinen
Beiträge: 13438 Registriert: 02.04.2004 AIP2013SP2.2 XPproSP2 MS-IntelliMouse-Optical SpacePilot DellM4600 2,13GHz 2GB FxGo1400 1920x1200 am Dock Dell2711
|
erstellt am: 02. Okt. 2016 18:01 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von RolandD: ... öffnet das IPT ... der ersten Referenz der IDW
Dazu, bzw. zu meinem zuvor erwähnten Makro (s. hier unten angefügter Code) habe ich noch eine Frage. Dieses mein Makro hat in den vorigen Tagen nicht wie erwartet funktioniert, und zwar bei einem elastischen Bauteil, zu dem es zwei Modelle gibt (was ich auch schon lange so praktiziere): 1. die verformte Variante, Einbauzustand, die in die Baugruppe eingefügt wird und daher in der Stückliste erscheint und damit auch die gültigen iProperties enthält, 2. die lose Variante, die für die Fertigung auf der Zeichnung dargestellt wird und zur Sicherheit gar keine iProperties enthalten soll. Damit nun in der idw im Schriftfeld die richtigen Daten erscheinen, erstelle ich immer zuerst die bei mir obligatorische kleine schattierte Schrägansicht unten rechts von dem "Einbaumodell", und erst dann die achparallelen Ansichten des "entspannten" Modells für die Fertigungsbemaßung. Das funktioniert auch, was das Schriftfeld anbelangt, schon immer und auch jetzt sehr gut. Im Schriftfeld erscheinen die Daten des Einbaumodells, was auch durch den mit dargestellten Dateinamen eindeutig erkennbar ist. Problem ist mein Makro, das öffnete mir jetzt immer nur das Fertigungsmodell. Wie kann das sein, dass das Schriftfeld eine andere Datei bzw. Ansicht als Erstansicht heranzieht als mein Makro? Code:
Public Sub OpenModel() Set oDoc = ThisApplication.ActiveDocument If oDoc.File.ReferencedFiles.Count = 0 Then MsgBox "Es ist in dieser Datei kein Modell referenziert." Else dateiname = oDoc.File.ReferencedFiles.Item(1).FullFileName End If ThisApplication.Documents.Open (dateiname) End Sub
------------------ Roland www.Das-Entwicklungsbuero.de It's not the hammer - it's the way you hit! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RolandD Mitglied
Beiträge: 559 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. Okt. 2016 18:29 <-- editieren / zitieren --> Unities abgeben: Nur für Roland Schröder
Hallo Roland, Zitat: Wie kann das sein, dass das Schriftfeld eine andere Datei bzw. Ansicht als Erstansicht heranzieht als mein Makro?
- Das Schriftfeld wird mit den iProperties der Datei der Erstansicht gefüllt - Dein Makro öffnet die referenzierte Datei mit dem Counter 1 schau mal nach unter Verwalten- Referenz ersetzen. Da sind 2 Referenzen drin und kurioserweise erhält die zuletzt eingefügte Datei die Nr. 1 (die vorherige rutscht auf 2) und wird deshalb vom Makro geöffnet Edit: Du könntest den Dateiname aus deiner Erstansicht holen: if oDoc.Sheets.Item(1).DrawingViews.count = 0 then MsgBox "Es ist in dieser Datei kein Modell referenziert." Exit Sub Else dateiname = oDoc.Sheets.Item(1).DrawingViews.Item(1).ReferencedFile.FullFileName ThisApplication.Documents.Open (dateiname) End If ------------------ Gruß Roland [Diese Nachricht wurde von RolandD am 02. Okt. 2016 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RolandD Mitglied
Beiträge: 559 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: 06. Okt. 2016 22:04 <-- editieren / zitieren --> Unities abgeben: Nur für Roland Schröder
Zitat: Original erstellt von Roland Schröder: Wie kann das sein, dass das Schriftfeld eine andere Datei bzw. Ansicht als Erstansicht heranzieht als mein Makro?
und kannst du mit:
Code: dateiname = oDoc.Sheets.Item(1).DrawingViews.Item(1).ReferencedFile.FullFileName
die richtige Datei öffnen? ------------------ Gruß Roland Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Frank_Schalla Ehrenmitglied CAD_SYSTEMBETREUER
Beiträge: 1732 Registriert: 06.04.2002 DELL M6800 Cad Admin Methodikentwickler 3D
|
erstellt am: 09. Okt. 2016 18:46 <-- editieren / zitieren --> Unities abgeben: Nur für Roland Schröder
Hi Roland ich konnte mir den Blödsinn den Autodesk da gemacht hat (2D Name muss gleich 3D Name sein ) nicht länger ansehen. Hatte heute ein wenig Zeit und Lust für nen ersten Wurf. Die EXE im Anhang findet jede Zeichnung egal wie sie heisst Im Video sieht man wie funktioniert. Einfach ein Modell öffnen und die Datei IV_FIND_2D.exe starten
------------------ ************************************ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Roland Schröder Ehrenmitglied V.I.P. h.c. Dr.-Ing. Maschinenbau, Entwicklung & Konstruktion von Spezialmaschinen
Beiträge: 13438 Registriert: 02.04.2004 AIP2013SP2.2 XPproSP2 MS-IntelliMouse-Optical SpacePilot DellM4600 2,13GHz 2GB FxGo1400 1920x1200 am Dock Dell2711
|
erstellt am: 10. Okt. 2016 15:01 <-- editieren / zitieren --> Unities abgeben:
Hallo RolandD, Danke noch mal für Deine Hilfe und Anregungen, aber ich hatte bislang noch keine Muße, diese zugegebenermaßen nicht all zu große Arbeitshinderlichkeit zu beheben. Es ist aber sehr erleichternd, zu wissen, warum es so ist, und sogar die Abhilfe parat zu haben. ------------------ Roland www.Das-Entwicklungsbuero.de It's not the hammer - it's the way you hit! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Roland Schröder Ehrenmitglied V.I.P. h.c. Dr.-Ing. Maschinenbau, Entwicklung & Konstruktion von Spezialmaschinen
Beiträge: 13438 Registriert: 02.04.2004 AIP2013SP2.2 XPproSP2 MS-IntelliMouse-Optical SpacePilot DellM4600 2,13GHz 2GB FxGo1400 1920x1200 am Dock Dell2711
|
erstellt am: 10. Okt. 2016 15:13 <-- editieren / zitieren --> Unities abgeben:
Hi Frank, Danke für Deine Mühe, aber die Zeichnungsdateien so wie die jeweils zugrundeliegende Modelldatei zu benennen, fand ich bisher weder schwierig, noch irgendwie fragwürdig, geschweige denn blödsinnig. Und man wird ja noch nicht mal dazu gezwungen. Problematisch finde ich es allerdings, alle IDWs zu scannen, um zu finden, wo ein Modell dargestellt wird. In Deinem Movie dauert das für 2.700 St. schon ziemlich lange, aber ich habe allein bei einem Kunden (= eine ipj) schon über 14.000 Modelle. Finde ich so nicht praktikabel. Und steht die Information, in welche(r)n Zeichnung(en) ein Modell vorkommt, nicht viel leichter und schneller auffindbar in der Datenbank im Vault? ------------------ Roland www.Das-Entwicklungsbuero.de It's not the hammer - it's the way you hit! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Frank_Schalla Ehrenmitglied CAD_SYSTEMBETREUER
Beiträge: 1732 Registriert: 06.04.2002 DELL M6800 Cad Admin Methodikentwickler 3D
|
erstellt am: 10. Okt. 2016 17:54 <-- editieren / zitieren --> Unities abgeben: Nur für Roland Schröder
Hi Roland NEE die 2700 sind die Zeichnungen. ich suche in einer Projektdatei (SAP) mit 80000 Dateien. Aber ok war ja auch nur eine Idee von mir. Wegen der Name stört nicht. Wie findest du den eine Zeichnung nennen wir sie mal 3D Name = Kunde_xyz.iam 2D Name = Kunde_xyz.idw 2D Name Untersuchung = Kunde_xyz_variante.idw Klar ist vault oder alles andere dafür gedacht aber ohne ????? Wie dann. ------------------ ************************************ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
axi92 Mitglied Konstrukteur
Beiträge: 685 Registriert: 20.02.2010 Inventor 2014 64bit SP2 Vault Basic 2014 64bit SP1 HP Z200 Win 7 64bit 16GB RAM CPU: i5 3,2GHz GPU: Nvidia Quadro K600
|
erstellt am: 01. Feb. 2017 07:12 <-- editieren / zitieren --> Unities abgeben: Nur für Roland Schröder
Ich habe es auch so ähnlich in verwendung und das Makro auf den (.) "Punkt" gelegt ist wirklich praktisch. Da ich mit dem Hotkey zwischen Zeichnung und Teil hin und her wechseln kann Wichtig dazu zu sagen bei uns ist Dateiname der Zeichnung und Bauteil/Baugruppe gleich der Bauteilnummer. Kann man natürlich umschreiben so wie jeder es braucht. Code:
Public Sub OpenIDW() ' Angewendet in .ipt oder .iam wird die dazugehörige .idw geöffnet. ' Angewendet in .idw wird die dazugehörige .ipt oder .iam geöffnet. Dim oDoc As Document Dim oReferencedDoc As Document Dim oDocName As String Dim oReferencedDocName As String Dim Dateiname As String Dim ReferencedDateiname As String Dim fs As Object Set oDoc = ThisApplication.ActiveDocument 'Debug.Print "Handle vom Aktiven Dokument: " & oDoc If TypeOf oDoc Is DrawingDocument Then 'Offenes Dokument ist eine Zeichnung On Error GoTo Kein_dokument_verknupft Set oReferencedDoc = oDoc.ReferencedDocuments.item(1) On Error GoTo 0 'Debug.Print "Handle vom Referenzierten Dokument " & oReferencedDoc & " Dateiname: " & oReferencedDoc.FullFileName ThisApplication.Documents.Open (oReferencedDoc.FullFileName) Exit Sub End If oDocName = oDoc.FullFileName If oDocName = "" Then MsgBox "Bitte Modell erst speichern!" Exit Sub End If Dateiname = GetPathFromFullFilename(oDoc.FullFileName) & GetPartNumber(oDoc) & ".idw" Set fs = CreateObject("Scripting.FileSystemObject") If fs.fileExists(Dateiname) = True Then ThisApplication.Documents.Open (Dateiname) Else MsgBox "keine IDW vorhanden" End If Exit Sub Kein_dokument_verknupft: MsgBox "Es ist kein Dokument zum öffnen verknüpft!" End Sub Public Function GetPartNumber(Doc) 'Bauteilnummer GetPartNumber = False 'Standard auf False If TypeOf Doc Is AssemblyDocument Or TypeOf Doc Is PartDocument Then 'Nur bei .iam und .ipt GetPartNumber = Doc.PropertySets.item("{32853F0F-3444-11D1-9E93-0060B03C1CA6}").item("Part Number").Value 'iPropertie auslesen ElseIf TypeOf Doc Is DrawingDocument Then GetPartNumber = SelectReferencedDoc(Doc).PropertySets.item("{32853F0F-3444-11D1-9E93-0060B03C1CA6}").item("Part Number").Value 'iPropertie auslesen End If GetPartNumber = Replace(GetPartNumber, " ", "") 'Entfernt Leerzeichen wenn welche vorhanden sind End Function
------------------ Grüße aus Wien Philipp Email: Base64 Encoded: cGhpcHNfOTJAeWFob28uZGU= [Diese Nachricht wurde von axi92 am 01. Feb. 2017 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
BernoAn Mitglied
Beiträge: 172 Registriert: 16.01.2014
|
erstellt am: 01. Feb. 2017 08:25 <-- editieren / zitieren --> Unities abgeben: Nur für Roland Schröder
|