Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  PartNumber im Zwischenablage Kopieren

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
Autor Thema:  PartNumber im Zwischenablage Kopieren (3476 mal gelesen)
DasDon
Mitglied
Konstruktuer


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

Beiträge: 169
Registriert: 25.07.2011

R18 SP2. WIN

erstellt am: 14. Sep. 2011 12:54    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

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



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

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 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 DasDon 10 Unities + Antwort hilfreich

Hallo,
die Vorgehensweise finde ich sehr merkwürdig. Selbst wenn du es schaffst, wie soll es denn dann weitergehen?

Hast du es mal mit ...Partnumber.tostring versucht?

Wenn du doch vorhast mehrere Daten zu ermitteln, dann würde ich entweder diese Daten direkt in ein Dokument schreiben oder mit .Net arbeiten und nicht in einer VBA-Umgebung.

------------------
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

DasDon
Mitglied
Konstruktuer


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

Beiträge: 169
Registriert: 25.07.2011

R18 SP2. WIN

erstellt am: 14. Sep. 2011 14:04    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

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



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

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 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 DasDon 10 Unities + Antwort hilfreich

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



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

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 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 DasDon 10 Unities + Antwort hilfreich

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


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

Beiträge: 169
Registriert: 25.07.2011

R18 SP2. WIN

erstellt am: 15. Sep. 2011 08:45    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

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



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

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 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 DasDon 10 Unities + Antwort hilfreich

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


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

Beiträge: 1385
Registriert: 13.01.2007

WIN 7 64bit
V5R21SP3HF49
3DX/V6 R2016x

erstellt am: 16. Sep. 2011 07: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 Nur für DasDon 10 Unities + Antwort hilfreich

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


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

Beiträge: 169
Registriert: 25.07.2011

R18 SP2. WIN

erstellt am: 16. Sep. 2011 08:27    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

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



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

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 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 DasDon 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von meisterlumpi:
"Microsoft ActiveX Data Objects Library" unter verweisen aktivieren.

hast du das gemacht?

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

DasDon
Mitglied
Konstruktuer


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

Beiträge: 169
Registriert: 25.07.2011

R18 SP2. WIN

erstellt am: 23. Sep. 2011 10:57    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

Ja, habe ich. 

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

meisterlumpi
Mitglied



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

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 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 DasDon 10 Unities + Antwort hilfreich

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



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

Beiträge: 412
Registriert: 26.03.2014

CATIA V5 R26

erstellt am: 20. Nov. 2023 09:07    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 DasDon 10 Unities + Antwort hilfreich

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 Textstream

sString1 = "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

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