Autor
|
Thema: Dimension mit Toleranzen nach excel auslesen (3019 mal gelesen)
|
cmb Mitglied Systembetreuer
Beiträge: 500 Registriert: 12.07.2002 CATIA V5-6R2016 64bit Smarteam R22.6 Moldflow Adviser 2014 Lenovo Think Pad P90
|
erstellt am: 10. Mrz. 2009 11:58 <-- editieren / zitieren --> Unities abgeben:
Hallo Forum, das Script: Language="VBSCRIPT" Sub CATMain() Dim InputObjectType(0) As String set document = CATIA.ActiveDocument If TypeName(document)="DrawingDocument" then Set oSelection = document.Selection oSelection.Search "CATDrwSearch.DrwDimension.DimensionType=DrwDimDistance,scr" WriteTxTFile(oSelection) oSelection.clear Else End If End Sub Sub WriteTxTFile(oSelection) Dim sPath As String Dim sTime As String Dim sName As String Dim sFile As String documentname = CATIA.ActiveDocument.Name position = InStr(documentname,".CATDrawing") position = position -1 documentname = Left(documentname,position) username = CATIA.SystemService.Environ("USERNAME") sPath = "\\c0win116\team\TC\PPT\CAD\Smarteam\" & username & "\work" sName = "\DrawingDimension_" & documentname & ".csv" sFile = sPath & sName Set oFileOut = CATIA.FileSystem.CreateFile(sFile,TRUE) Dim oStream As TextStream Set oStream = oFileOut.OpenAsTextStream("ForWriting") For i=1 to oSelection.count Set Dimension = oSelection.Item(i).Value oStream.Write Dimension.GetValue.Value & vbCrLf Next oStream.close End Sub schreibt mir alle Längenbemassungen einer Zeichnung in ein csv sheet. FRAGE: gibt es die Möglichkeit die Toleranzen auch zu exportieren?
G Norbert Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lusilnie Mitglied
Beiträge: 1486 Registriert: 13.07.2005
|
erstellt am: 10. Mrz. 2009 23:35 <-- editieren / zitieren --> Unities abgeben: Nur für cmb
Hallo cmb, die Sub ".GetTolerances" von "Dimension" kann Dir verschiedene Infos herausschreiben. Allerdings ist das nicht so komfortabel wie bei der Function ".GetValue"! D.h., Du musst die Infos, die die Sub ausliest, bewerten und verarbeiten, um sie dem Stream fürs Excel mitgeben zu können. Näheres dazu in der Doku zu V5-Automation oder in Tests... mfg, Lusilnie
------------------ Alle Aussagen zu DassaultSystemes-Produkten sind sehr optimistisch, selbst diese!!!
frei nach größeren Geistern [Diese Nachricht wurde von Lusilnie am 10. Mrz. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cmb Mitglied Systembetreuer
Beiträge: 500 Registriert: 12.07.2002 CATIA V5-6R2016 64bit Smarteam R22.6 Moldflow Adviser 2014 Lenovo Think Pad P90
|
erstellt am: 11. Mrz. 2009 15:39 <-- editieren / zitieren --> Unities abgeben:
Hallo Lusilinie, habe mir überlegt die beiden Toleranzwerte in ein Array zu übernehmen, aber das scheint nicht der richtige Weg zu sein. Dimension.GetTolerances oTolType,oTolName,oUpTol,oLowTol,odUpTol,odLowTol,oDisplayMode msgbox ("Upper tolerance ") & odUpTol msgbox ("lower tolerance ") & odLowTol Dim Value02 Value02 = Array(odUpTol,odLowTol)
die beiden msgbox geben den richtigen Wert an aber die Zeile Value02 = Array(odUpTol,odLowTol) gibt mir immer eine Fehlermeldung aus. Kompilierungsfehler Beschreibung: ')' erwartet Kann es sein das ein Array hier gar nicht der Richtige ansatz ist?
G Norbert [Diese Nachricht wurde von cmb am 11. Mrz. 2009 editiert.] [Diese Nachricht wurde von cmb am 11. Mrz. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cmb Mitglied Systembetreuer
Beiträge: 500 Registriert: 12.07.2002 CATIA V5-6R2016 64bit Smarteam R22.6 Moldflow Adviser 2014 Lenovo Think Pad P90
|
erstellt am: 11. Mrz. 2009 16:29 <-- editieren / zitieren --> Unities abgeben:
Habe einen Ansatz wie ich meine Dimension in einen String bekomme: Dim Eingabe (3) Dim Ausgabe Eingabe (0) = DimensionValue Eingabe (1) = "+" Eingabe (2) = odUpTol Eingabe (3) = odLowTol Ausgabe = Join (Eingabe) leider läuft der Wert Dim Eingabe (3) bei einem Schleifendurchlauf beim zweiten Maß auf einen Fehler. Gruß Norbert
[Diese Nachricht wurde von cmb am 11. Mrz. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 12. Mrz. 2009 12:16 <-- editieren / zitieren -->
Hallo Norbert, versuch es mal auf diese Art. ..... ..... (dein Makro) For i=1 to oSelection.count Set Dimension = oSelection.Item(i).Value
Dimension.GetTolerances oTolType,oTolName,oUpTol,oLowTol,odUpTol,odLowTol,oDisplayMode oStream.Write Dimension.GetValue.Value &";"& odUpTol & "; " & odLowTol & vbCrLf Next oStream.close .... .... Gruß Martin ------------------ mb |
MICHLICK Mitglied CAD Methodik Entwickler (CATIA; NX)
Beiträge: 454 Registriert: 20.06.2001 Der Aufwand bei Änderungen ist groß, wenn die Finger schneller klicken als das Gehirn denkt.
|
erstellt am: 12. Mrz. 2009 17:03 <-- editieren / zitieren --> Unities abgeben: Nur für cmb
Hallo Norbert, die Dim Anweisung sollte ausserhalb der Schleife stehen. Wenn Die Anweisung innerhalb einer Schleife steht, dann versuchst Du eine neue Variable mit dem gleichen Namen wie eine vorhandene Variable zu erzeugen und dass läuft zwangsläufig auf einen Fehler. ------------------ Gruß Michael B. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cmb Mitglied Systembetreuer
Beiträge: 500 Registriert: 12.07.2002 CATIA V5-6R2016 64bit Smarteam R22.6 Moldflow Adviser 2014 Lenovo Think Pad P90
|
erstellt am: 13. Mrz. 2009 10:10 <-- editieren / zitieren --> Unities abgeben:
Hallo, vielen Dank für eure Tips. Bin wieder einen Step weiter Mit: oStream.Write Dimension.GetValue.Value &" +"& odUpTol & " " & odLowTol & vbCrLf schreibt mir das Scritp die Value mit Toleranz in ein Exelfeld. Kann ich den Komponentennamen / Item (bei uns so etwas wie "Bemaßung.x") einer Bemassung auch mit auslesen? Gruß Norbert Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 13. Mrz. 2009 12:23 <-- editieren / zitieren -->
Hallo Norbert, Ja, mit Dimension.Name ist aber nur sinnvoll, wenn die View mitangegeben wird, da sich die Namen wiederholen z.B. Name Pfad Bemaßung.1 \Drawing\Blatt.1\ViewMakeUp.4\ZAB-ZAB\DrwDressUp.1\Bemaßung.1 Bemaßung.2 \Drawing\Blatt.1\ViewMakeUp.4\ZAB-ZAB\DrwDressUp.1\Bemaßung.2 . . Bemaßung.1 \Drawing\Blatt.1\ViewMakeUp.4\ZAE-ZAE\DrwDressUp.1\Bemaßung.1 Gruß Martin ------------------ mb |
cmb Mitglied Systembetreuer
Beiträge: 500 Registriert: 12.07.2002 CATIA V5-6R2016 64bit Smarteam R22.6 Moldflow Adviser 2014 Lenovo Think Pad P90
|
erstellt am: 13. Mrz. 2009 13:59 <-- editieren / zitieren --> Unities abgeben:
Hallo Martin, vielen Dank für den Tip. Funktioniert. Ich dachte immer Catia vergibt für jede Bemassung einen eindeutigen Identifier über welchen man Prüfberichte generieren kann, Schade. Gruß Norbert Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 16. Mrz. 2009 10:01 <-- editieren / zitieren -->
Hallo Norbert, habe mir das noch einmal angesehen, du kannst natürlich jedem Maß eine eindeutige Bezeichnung geben, siehe Beispiel bei der Gelegenheit möchte ich dich noch darauf hinweisen, daß bei deiner Selektion nur Distanzen,also keine Radien und Winkel, ausgewählt werden. (DimensionType=DrwDimDistance,scr) For i=1 to oSelection.count Set Dimension = oSelection.Item(i).Value Dimension.Name = "Maß." & i Dimension.GetTolerances oTolType,oTolName,oUpTol,oLowTol,odUpTol,odLowTol,oDisplayMode Gruß Martin ------------------ mb |
Axel.Strasser Ehrenmitglied V.I.P. h.c. Selbstständig im Bereich PLM/CAx
Beiträge: 4107 Registriert: 12.03.2001
|
erstellt am: 16. Mrz. 2009 11:18 <-- editieren / zitieren --> Unities abgeben: Nur für cmb
|
cmb Mitglied Systembetreuer
Beiträge: 500 Registriert: 12.07.2002 CATIA V5-6R2016 64bit Smarteam R22.6 Moldflow Adviser 2014 Lenovo Think Pad P90
|
erstellt am: 16. Mrz. 2009 11:57 <-- editieren / zitieren --> Unities abgeben:
Hallo Martin, hallo Axel, vielen Dank für die Infos. Habe das Tool von Cenit gesehen und finde es kann genau das was wir wollen. Mal sehen ob ich unsere Controller davon überzeugen kann. Auf der anderen Seite ist es ganz intressant was man mit vb alles anstellen kann. Nach dem Motto: learning by doing LG Norbert Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Geomatiker / Vermessungstechniker (m/w/d) | Die DONETZ (Dortmunder Netz GmbH) ist der Netzbetreiber in Dortmund und eine 100-prozentige Tochter von DEW21. Bei uns sorgen Sie mit für den technisch einwandfreien Fluss von Strom, Gas und Wasser durch unser 11.000 km langes Versorgungsnetz. Freuen Sie sich dabei auf jede Menge Freiraum, Verantwortung und ein kollegiales Arbeitsklima. Bewegen Sie jetzt mit Ihrer Energie mehr: In Dortmund, für die Region, für die Menschen.... | Anzeige ansehen | Geowissenschaften |
|
Axel.Strasser Ehrenmitglied V.I.P. h.c. Selbstständig im Bereich PLM/CAx
Beiträge: 4107 Registriert: 12.03.2001
|
erstellt am: 16. Mrz. 2009 13:07 <-- editieren / zitieren --> Unities abgeben: Nur für cmb
|