Autor
|
Thema: PartNumber im Zwischenablage Kopieren (3476 mal gelesen)
|
DasDon Mitglied Konstruktuer
Beiträge: 169 Registriert: 25.07.2011 R18 SP2. WIN
|
erstellt am: 14. Sep. 2011 12:54 <-- editieren / zitieren --> Unities abgeben:
Moin moin, Ich muss bei vielen Bauteile die PartNumber raus suchen und wo anders eintragen (mail/access/etc). Dass heißt, jedes mal das gewünschte Part/Product selektieren -> Alt+ENTER in die Properties rein schauen -> und mit "copy-Paste" das PartNumber raus holen. Nun möchte ich einen macro schreiben, welches von das selektiere Part/Product den PartNumber in die Windows zwischenablage einfügt. Mein Code sieht bis jetzt so aus: Sub CATMain()
Dim mySelection mySelection = CATIA.ActiveDocument.Selection.Item(1).Value.PartNumber 'for personal check 'MsgBox mySelection mySelection.Copy()
End Sub Nun mit COPY möchte CATIA ein Objekt. Gut das verstehe ich, aber gibt es den nicht etwas um STRINGS in die zwischenablage zu kopieren? Vielen Dank schonmal im Vorraus, Gruß
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RSchulz Moderator² Head of CAD, Content & Collaboration / IT-Manager
Beiträge: 5541 Registriert: 12.04.2007 @Work Lenovo P510 Xeon E5-1630v4 64GB DDR4 Quadro P2000 256GB PCIe SSD 512GB SSD SmarTeam V5-6 R2016 Sp04 CATIA V5-6 R2016 Sp05 E3.Series V2019 Altium Designer/Concord 19 Win 10 Pro x64
|
erstellt am: 14. Sep. 2011 13:07 <-- editieren / zitieren --> Unities abgeben: Nur für DasDon
|
DasDon Mitglied Konstruktuer
Beiträge: 169 Registriert: 25.07.2011 R18 SP2. WIN
|
erstellt am: 14. Sep. 2011 14:04 <-- editieren / zitieren --> Unities abgeben:
Danke erstmals für die Antwort. Das Problem ist, dass ich in eine DMU arbeite und diese auf "Clashes", "Clearance" "Konstruktionsfehler" etc untersuche. Alle Probleme die ich finde, werden Anhand von Annotations fesgehalten. Ich erstelle einen Annotation, füge die Namen(PartNumber)der betroffene Bauteile in das "Commentfield" der Annotations hinzu (und weiteres), expotiere diese und verschicke die XML per Mail an die Fachabteilung, damit sie die Probleme beheben können. Die Fachabteilung kann somit an der richtigen Stelle in der DMU hinfliegen und heraus lesen um welche Bauteile es sich handelt. Diese Werte (PartNumber, etc) lese ich auch aus den XML Dateien heraus und erstelle damit ExcelTorten über häufigkeit der betroffene Bauteilen etc. Ich benötige also das PartNumber in die Annotations commentfield, eine andere Datei wäre wieder zu viel Aufwand und nicht Wünschenswert. PS: .NET kann ich nicht. Welche vorteile hätte ich es für CATIA zu erlernen? Kann man damit mehr automatisieren? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RSchulz Moderator² Head of CAD, Content & Collaboration / IT-Manager
Beiträge: 5541 Registriert: 12.04.2007 @Work Lenovo P510 Xeon E5-1630v4 64GB DDR4 Quadro P2000 256GB PCIe SSD 512GB SSD SmarTeam V5-6 R2016 Sp04 CATIA V5-6 R2016 Sp05 E3.Series V2019 Altium Designer/Concord 19 Win 10 Pro x64
|
erstellt am: 14. Sep. 2011 14:27 <-- editieren / zitieren --> Unities abgeben: Nur für DasDon
Zitat: Original erstellt von DasDon: PS: .NET kann ich nicht. Welche vorteile hätte ich es für CATIA zu erlernen? Kann man damit mehr automatisieren?
Für .Net brauchst du ein Visual Studio, das es in einer "abgespeckten" Version auch kostenlos gibt. Mir .Net bzw. VB.Net hast du alle Möglichkeiten nach Importieren der CATIA Libraries und dem Fangen von CATIA, wie in der VBA-Umgebung auch. Zusätzlich hast du allerdings viel mehr Möglichkeiten, die du in der "geschlossenen" CATIA-Umgebung eben nicht hast. Die Fehlerbehandlung kann viel effektiver und vielfältiger mit z.B. Try Catch definiert werden. Du kannst alle möglichen Librarys einbinden. Von Acces bis hin zu Outlook und was weis ich nicht. Die Befehlsstrukturen sind geringfüg anders, da du eben nicht 1zu1 den internen Namespace von CATIA verwenden kannst, aber mit ein bisschen Übung sind die Sachen Ruckzuck migriert! Zusätzlich bist du deutlich flexibler, da du nicht mehr vom VBA CATIA abhängig bist. Für MAkros bedeuet dies z.B. einfach nur, dass du alle Funktionen z.B. in eine Exe schreibst und diese per vba startest. Deinen Fensterstyle und das Design kannst du übrigens auch viel schneller und mit mehr Möglichkeiten erstellen. Alles in allem kann ich niemandem mehr empfehlen, mit dem VBA zu arbeiten. Ich selbst habe alles auf .Net umgestellt und bin mehr als zufrieden. BTW ein kleine positiver Nebeneffekt ist, dass CATIA nicht mitabstürzt, wenn sich ein Makro verabschiedet, und die Leistungsaufteilung besser ist, da beide Programme (CATIA und das MAKRO) einen eigenständigen Thread darstellen. Zum Thema Multithreading habe ich auch schon einiges gemacht. Wenn man hier komplexe Makros in einzelne eigenständige Abläufe steckt, kann man hier sogar deutlich an Performance zulegen. Das funktioniert aber natürlich nur, wenn einzelne Threads nicht auf die anderen warten müssen. Naja aber das ist etwas anderes... Für .Net selbst kann ich dir Galileocomputing empfehlen, da steht alles drin was man zum lernen braucht.
------------------ MFG Rick Schulz Nettiquette (CAD.de) - Was ist die Systeminfo? - Wie man Fragen richtig stellt. - Unities Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
meisterlumpi Mitglied
Beiträge: 118 Registriert: 15.04.2011 Intel Core2 Quad Q6600 2.40 GHz | 4 GB RAM | Win7x64
|
erstellt am: 14. Sep. 2011 18:30 <-- editieren / zitieren --> Unities abgeben: Nur für DasDon
Code: CATIA.ActiveDocument.Selection
bezeichnet ausgewählte objekte in catia und hat gar nichts mit der windows zwischenablage zutun.mit einem verweis auf die Microsoft Forms 2.0 Objectlibrary kannst du folgende sub benutzen um text in die windowszwischenablage zu kopieren. Code:
Public Sub SchreibeTextInDieZwischenablage() Dim oData As New DataObject Dim sText As String sText = "Hallo Leute" & vbCrLf & "Neues von Online Excel" With oData .SetText sText .PutInClipboard End With End Sub
quelle: http://www.online-excel.de/excel/singsel_vba.php?f=28
Zitat: Nun mit COPY möchte CATIA ein Objekt..
mit selection.copy wird die auswahl in die catia zwischenablage kopiert. copy will kein objekt mehr.. was zu dem zeitpunkt nicht in der selection ist wird halt nicht mitkopiert.[Diese Nachricht wurde von meisterlumpi am 14. Sep. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DasDon Mitglied Konstruktuer
Beiträge: 169 Registriert: 25.07.2011 R18 SP2. WIN
|
erstellt am: 15. Sep. 2011 08:45 <-- editieren / zitieren --> Unities abgeben:
Ich glaube du hast mich flasch verstanden... Zitat: Code: -------------------------------------------------------------------------------- CATIA.ActiveDocument.Selection -------------------------------------------------------------------------------- bezeichnet ausgewählte objekte in catia und hat gar nichts mit der windows zwischenablage zutun.
Ich möchte aus dem Objeckt, welches ich in CATIA selektiert habe (sprich: CATIA.ActiveDocument.Selection), den PartNumber holen und diesen String in der zwischenablage haben, damit ich es mit STRG+V in das "Annotations commentfield" einfügen kann. Gruß [Diese Nachricht wurde von DasDon am 15. Sep. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
meisterlumpi Mitglied
Beiträge: 118 Registriert: 15.04.2011 Intel Core2 Quad Q6600 2.40 GHz | 4 GB RAM | Win7x64
|
erstellt am: 15. Sep. 2011 15:52 <-- editieren / zitieren --> Unities abgeben: Nur für DasDon
Zitat: Ich möchte aus dem Objeckt, welches ich in CATIA selektiert habe (sprich: CATIA.ActiveDocument.Selection), den PartNumber holen und diesen String in der zwischenablage haben
Code:
Sub CATMain() Dim oData As New DataObject Dim sText As String With CATIA.ActiveDocument.Selection If .Count <> 0 Then sText = .Item(1).Value.PartNumber Else sText = "" End If End With With oData .SetText sText .PutInClipboard End With End Sub
"Microsoft ActiveX Data Objects Library" unter verweisen aktivieren. Die eigenschaft .partnumber gibt es nur bei unterprodukten einer baugruppe. die baugruppe selbst oder ein einzeln geöffnetes part haben nur die eigenschaft .name, .partnumber haben die keine. [Diese Nachricht wurde von meisterlumpi am 15. Sep. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tberger Mitglied Application Manager CATIA V5 / V6
Beiträge: 1385 Registriert: 13.01.2007 WIN 7 64bit V5R21SP3HF49 3DX/V6 R2016x
|
erstellt am: 16. Sep. 2011 07:37 <-- editieren / zitieren --> Unities abgeben: Nur für DasDon
Zitat: Original erstellt von meisterlumpi:
Die eigenschaft .partnumber gibt es nur bei unterprodukten einer baugruppe. die baugruppe selbst oder ein einzeln geöffnetes part haben nur die eigenschaft .name, .partnumber haben die keine.
Das stimmt so nicht ganz. In einem Einzelteilfenster kann man über Sub CATMain() Dim MyPart As PartDocument Set MyPart = CATIA.ActiveDocument Dim MyPartProduct As Product Set MyPartProduct = MyPart.Product Dim MyPartnumber As String MyPartnumber = MyPartProduct.PartNumber MsgBox MyPartnumber End Sub auf die Partnumber zugreifen. Instanznamen (.name) gibt es natürlich keinen. Bei der Ausgabe des .name (MyPartNumber = MyPartProduct.Name) erscheint dann auch nochmal der Inhalt der Partnumber.
------------------ Grüße aus dem Thurgau Thomas +++++++++++++++++++++++++++++++++ CATIA - eine Laune der Natur ... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DasDon Mitglied Konstruktuer
Beiträge: 169 Registriert: 25.07.2011 R18 SP2. WIN
|
erstellt am: 16. Sep. 2011 08:27 <-- editieren / zitieren --> Unities abgeben:
Hi vielen Dank für die Antwort. Jedoch haut es nicht ganz hin. Ich bekomme beim Ausführen des Makros eine Fehler Meldung an der Stelle "With oData", und zwar das ein Objeckt erforderlich ist. Ein objekt wurde doch mit: "Dim oData As New DataObject" deklariert, oder etwa nicht? Naja, vieleicht hast du ja noch eine Idee... Gruß Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
meisterlumpi Mitglied
Beiträge: 118 Registriert: 15.04.2011 Intel Core2 Quad Q6600 2.40 GHz | 4 GB RAM | Win7x64
|
erstellt am: 22. Sep. 2011 10:10 <-- editieren / zitieren --> Unities abgeben: Nur für DasDon
|
DasDon Mitglied Konstruktuer
Beiträge: 169 Registriert: 25.07.2011 R18 SP2. WIN
|
erstellt am: 23. Sep. 2011 10:57 <-- editieren / zitieren --> Unities abgeben:
|
meisterlumpi Mitglied
Beiträge: 118 Registriert: 15.04.2011 Intel Core2 Quad Q6600 2.40 GHz | 4 GB RAM | Win7x64
|
erstellt am: 25. Sep. 2011 19:03 <-- editieren / zitieren --> Unities abgeben: Nur für DasDon
hm.. komisch. von der Microsoft ActiveX Data Objects Library gibts glaube ich verschiedene versionen. hast du die mal durch probiert? Zitat: Ein objekt wurde doch mit: "Dim oData As New DataObject" deklariert, oder etwa nicht?
ja, eigentlich schon. probier mal das 'With' wegzulassen, also Code:
oData.SetText sText oData.PutInClipboard
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lionel Hutz Mitglied
Beiträge: 412 Registriert: 26.03.2014 CATIA V5 R26
|
erstellt am: 20. Nov. 2023 09:07 <-- editieren / zitieren --> Unities abgeben: Nur für DasDon
Ich habe einen Beispielcode gefunden und angepasst, der als CATScript funktionert. Code: 'https://www.eng-tips.com/viewthread.cfm?qid=373626 Sub CATMain () Dim sString1 As String Dim sString2 As String Dim WshShell As Object Dim oExec As Object Dim oWrite As TextstreamsString1 = "PartNumber" sString2 = "Nomenclature" Set WshShell = CreateObject("WScript.Shell") Set oExec = WshShell.Exec("clip") Set oWrite = oExec.stdIn oWrite.WriteLine sString1 oWrite.WriteLine sString2 oWrite.Close End Sub
Ich bin mir zwar nicht sicher, ob ich die Variablen korrekt deklariert habe, aber es funktioniert ohne Anpassungen am System. Edit: Ich habe mal ein grünes Häkchen gesetzt. [Diese Nachricht wurde von Lionel Hutz am 20. Nov. 2023 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |