Autor
|
Thema: Definition String programmieren (1213 mal gelesen)
|
Studentler Mitglied
Beiträge: 41 Registriert: 11.11.2013 Catia V5 (5.19), Service Pack 5, Windows XP
|
erstellt am: 11. Nov. 2013 17:17 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, habe noch nie mit Catscript gearbeitet, aber ist es theoretisch möglich, ein kleines Programm zu schreiben für folgendes Problem: Habe eine große Baugruppe mit vielen Unterbaugruppen und Parts. Wenn ich áuf deren Properties gehe wird mir unter dem Reiter "Product" als Definition "None" angezeigt. Ist es möglich per Programmierung hier den String von "Instance Name" oder "Description" automatisch einzuprogrammieren für alle Baugruppen und Unterbaugruppen, Parts ...? Danke für Tipps und Tricks ;-) Gruß Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 11. Nov. 2013 18:21 <-- editieren / zitieren --> Unities abgeben: Nur für Studentler
Servus Willkommen im Forum. Ja es ist möglich. Hier findest du ein ähnliche Aufgabe mit einer Lösung. Zur Anpassungen dieses Makro sind sicher Grundkenntnisse in VB hilfreich. Gruß Bernd
------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Studentler Mitglied
Beiträge: 41 Registriert: 11.11.2013 Catia V5 (5.19), Service Pack 5, Windows XP
|
erstellt am: 12. Nov. 2013 15:21 <-- editieren / zitieren --> Unities abgeben:
Habe zwar schonmal mit VBA gearbeitet aber weit bin ich nicht gekommen: Language="VBSCRIPT" Sub CATMain() Set productDocument1 = CATIA.ActiveDocument Set product1 = productDocument1.Product product1.Definition = product1.Nomenclature End Sub Damit kann ich zumindest das oberste Product umbennen. Doch wie wähle ich alle Products und Parts aus zur Umbennenung?
Bin aus den anderen Threads nicht schlau geworden. Danke für eure Hilfe Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HoBLila Mitglied Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx
Beiträge: 1118 Registriert: 29.05.2008 DELL PRECISION T3500 Intel(R) Xeon(R) CPU W3540 @ 2.93GHz 12285 MB RAM NVIDIA Quadro FX 1800 Microsoft Windows 7 Enterprise Service Pack 1 CATIA V5 R19 SP09 HF69 VB6.5 CAA RADE CDC
|
erstellt am: 12. Nov. 2013 15:51 <-- editieren / zitieren --> Unities abgeben: Nur für Studentler
Das Zauberwort heißt Rekursion. Aber das ist für einen Laien der Programmierung etwas komplex, würde ich sagen. http://de.wikipedia.org/wiki/Rekursion
Ich gehe aber davon aus, dass es hier schon einige Beispiele im Forum gibt, wie Du eine Produktstruktur durcharbeitest.
------------------ Mit freundlichen Grüßen, Henry Schneider alias Lila Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren: Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen, die Natur versucht, immer bessere Idioten zu bauen Xing Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Studentler Mitglied
Beiträge: 41 Registriert: 11.11.2013 Catia V5 (5.19), Service Pack 5, Windows XP
|
erstellt am: 12. Nov. 2013 16:10 <-- editieren / zitieren --> Unities abgeben:
Hmm das hat mir nicht wirklich weitergeholfen... über das hier bekomme ich wenigstens mal die Anzahl der Parts...es wird also schonmal auf die produktstruktur zurückgegriffen... Sub CATMain() Dim productDocument1 As Document Dim product1 As Product Dim products1 As Products Set productDocument1 = CATIA.ActiveDocument Set product1 = productDocument1.Product Set products1 = product1.Products 'count the number of CATParts partcount=product1.Products.Count msgbox"CHECK: The number of parts is "&partcount&". Please click OK to continue." Dim i As Integer For i=1 to partcount ... End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 12. Nov. 2013 16:19 <-- editieren / zitieren --> Unities abgeben: Nur für Studentler
Servus Das verlinkte Makro geht per Schleife alle Products (also alle Instanzen) durch und überprüft die Parameter. falls es sich um eine Componente oder Unterbaugruppe handelt ruft sich das Makro selbst wieder auf (=Rekursion). Du musst das Makro nur umbauen das die Definition angepasst wird nun nicht ein Parameter. Kopiere den Code mal ind VBA-Editor und lass es schrittweise Ablaufen Watch- bw Local-Fenster benutzen) Gruß Bernd PS: Alternativ kannst du auch per Schleife alle geöffneten Dokumente (Catia.Docments) abarbeiten. ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Studentler Mitglied
Beiträge: 41 Registriert: 11.11.2013 Catia V5 (5.19), Service Pack 5, Windows XP
|
erstellt am: 12. Nov. 2013 16:51 <-- editieren / zitieren --> Unities abgeben:
Danke für deine schnelle Antwort, leider habe ich kein Watch-Fenster zur Verfügung und kann nur im direkten Catia Editor arbeiten. Habe mir den Code durchgesehen, aber nicht wirklich verstanden wie ich auf die Definitions zugreife? Sind die Änderungen arg aufwendig? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 12. Nov. 2013 20:22 <-- editieren / zitieren --> Unities abgeben: Nur für Studentler
Servus Anbei ein Schnelllösung: (nur die Baugruppe (Einzelteile werden aromatisch mit abgearbeitet) öffnen): Code: Language="VBSCRIPT"Sub CATMain() For Each oDocument In CATIA.Documents If TypeName(oDocument) = "PartDocument" Or TypeName(oDocument) = "ProductDocument" Then oDocument.Product.Definition = oDocument.Product.Nomenclature End If Next End Sub
Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Studentler Mitglied
Beiträge: 41 Registriert: 11.11.2013 Catia V5 (5.19), Service Pack 5, Windows XP
|
erstellt am: 13. Nov. 2013 12:59 <-- editieren / zitieren --> Unities abgeben:
|