| |
| KISTERS 3DViewStation: 3D-Visualisierung für After Sales, Service und Ersatzteile, eine Pressemitteilung
|
Autor
|
Thema: Eigenschaft parameters auf die Zeichnung (1365 mal gelesen)
|
panchito Mitglied
Beiträge: 39 Registriert: 31.03.2015 Catia V5
|
erstellt am: 16. Apr. 2015 11:45 <-- editieren / zitieren --> Unities abgeben:
Hi ich quäle mich schon seit etwa zeit. Ich kenne mich leider sehr wenig mit programmierung mit VB. Ich habe ein Textbox auf meine Zeichnung erstellt die heißt "text.1". Auf die Part Dokumente habe ich unterschiedliche Eigenschaften erstellt z.B. "Drawing No." und Werte zugewiesen. Mit einem Makro, muss ich auf den Textbox das Wert für das Eigenschaft Drawing No. erscheinen. Ich habe viel über Atribute link gesucht. Aber als Makro konnte ich es nicht nutzen. Was ich gefunden habe das kann mir helfen ist diese Code: Sub CATMain() Dim ProductDrawn Set ProductDrawn=Nothing For i = 1 to 8 If TypeName(ViewDocument)="PartDocument" Then Set ProductDrawn=ViewDocument.Product Exit For End If If TypeName(ViewDocument)="Product" Then Set ProductDrawn=ViewDocument Exit For End If If ProductDrawn <> Nothing Then Texts.GetItem("Text.1").Text = ProductDrawn.ReferenceProduct.UserRefProperties.Item("DRAWING No.").ValueAsString End if End Sub Auf jeden fall, arbeitet es nicht.. weil das nicht komplet ist aber ich möchte sehr gerne irgendwie diese Zeile nutzen: Texts.GetItem("Text.1").Text = ProductDrawn.ReferenceProduct.UserRefProperties.Item("DRAWING No.").ValueAsString weil si werde ich auf die andere Datei von die Part zugreifen. Könnte mir jemand helfen oder eine idee geben?
Ich würde mich sehr freuen für eure Hilfe. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 12005 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 16. Apr. 2015 11:54 <-- editieren / zitieren --> Unities abgeben: Nur für panchito
Servus Ist das der ganze Code oder fehlt da was? Was funktioniert nicht? Wird das "Textfeld" richtig angesprochen? (ggf einfach mal mit einer MsgBox der String ausgeben lassen)? Oder liegt es daran, dass der Parameter nicht richtig angesprochen wird? Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
panchito Mitglied
Beiträge: 39 Registriert: 31.03.2015 Catia V5
|
erstellt am: 16. Apr. 2015 12:02 <-- editieren / zitieren --> Unities abgeben:
Hi Bernd, danke. Sorry es ist nicht der ganze Code.. Ist ein teil von ein ganz lange Code die ein Titleblock erstellt und mehr funktionen. Aber was mir interessiert ist hier: Sub CATMain() Function GetContext()
' Find execution context Select Case TypeName( Sheet ) Case "DrawingSheet" Select Case TypeName( ActiveDoc ) Case "DrawingDocument": GetContext="DRW" Case "ProductDocument": GetContext="SCH" Case Else: GetContext="Unexpected" End Select Case "Layout2DSheet" : GetContext="LAY" Case Else : GetContext="Unexpected" End Select End Function Dim ViewDocument Select Case GetContext(): Case "LAY": Set ViewDocument = CATIA.ActiveDocument.Product Case "DRW": If Views.Count>=3 Then Set ViewDocument = Views.Item(3).GenerativeBehavior.Document Else Set ViewDocument = Nothing End If Case Else:Set ViewDocument = Nothing End Select Dim ProductDrawn Set ProductDrawn=Nothing For i = 1 to 8 If TypeName(ViewDocument)="PartDocument" Then Set ProductDrawn=ViewDocument.Product Exit For End If If TypeName(ViewDocument)="Product" Then Set ProductDrawn=ViewDocument Exit For End If If ProductDrawn <> Nothing Then Texts.GetItem("Zeich-Nr").Text = ProductDrawn.ReferenceProduct.UserRefProperties.Item("DRAWING No.").ValueAsString End if End Sub Ich glaube aber die Funtion ist nicht richtig posisioniert. Das felher ist Syntaxfehler hier: "Function GetContext()"
Sorry für meine Deutsch. Danke Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
panchito Mitglied
Beiträge: 39 Registriert: 31.03.2015 Catia V5
|
erstellt am: 16. Apr. 2015 12:05 <-- editieren / zitieren --> Unities abgeben:
also am Ende würde es sein Texts.GetItem("text.1").Text = ProductDrawn.ReferenceProduct.UserRefProperties.Item("DRAWING No.").ValueAsString wenn mein text box text.1 heißt..... ich möchte nur in diese text box die werte von die Eigenschaft "DRAWING No." erscheint. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 12005 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 16. Apr. 2015 12:18 <-- editieren / zitieren --> Unities abgeben: Nur für panchito
Servus Mit Sicherheit ist die Function nicht richtig positioniert. Der Aufbau müsste so sein: Code: Sub CATMain() ''ganz viel Code '' Code ruft auch die Function auf End SubFunction Test() 'etas Code End Function
Wo hast du den Vorlagen-Code her? So kann das ganze nicht funktionieren, da fehlt sehr viel (welche View wird ausgewertet, wo liegt das Textfeld (Sheet und View, ...) Gruß Bernd PS: Grundlagenwissen zu VB(A) wären mit Sicherheit sinnvoll. ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
panchito Mitglied
Beiträge: 39 Registriert: 31.03.2015 Catia V5
|
erstellt am: 16. Apr. 2015 12:44 <-- editieren / zitieren --> Unities abgeben:
|
pusher Mitglied
Beiträge: 6 Registriert: 11.02.2021 Catia V5 R32
|
erstellt am: 25. Okt. 2022 09:08 <-- editieren / zitieren --> Unities abgeben: Nur für panchito
Hallo zusammen, der Beitrag ist zwar schon etwas älter, aber ich beschäftige mich aktuell mit dem automatischen Befüllen des Schriftfeldes. Ich beziehe mich auf in Catia enthaltene Dassault Script und bin gerade an der Stelle angekommen, wo abgefragt wird welche Art von Dokument vorliegt, bzw. ob Ansichten existieren. Kann mir jemand erklären warum an folgender Stelle eine Schleife 8x durchlaufen wird? Ich erkenne nicht was das bringt. Das funktioniert zwar, aber ich würde es gerne verstehen. Zitat: Set ProductDrawn=Nothing For i = 1 to 8 If TypeName(ViewDocument)="PartDocument" Then Set ProductDrawn=ViewDocument.Product Exit For End If If TypeName(ViewDocument)="Product" Then Set ProductDrawn=ViewDocument Exit For End If Set ViewDocument = ViewDocument.Parent Next
Gruß Michael
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 12005 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 25. Okt. 2022 09:48 <-- editieren / zitieren --> Unities abgeben: Nur für panchito
|
pusher Mitglied
Beiträge: 6 Registriert: 11.02.2021 Catia V5 R32
|
erstellt am: 25. Okt. 2022 11:33 <-- editieren / zitieren --> Unities abgeben: Nur für panchito
|
tobul Mitglied Physiker
Beiträge: 192 Registriert: 06.05.2003
|
erstellt am: 26. Okt. 2022 09:57 <-- editieren / zitieren --> Unities abgeben: Nur für panchito
Hallo! Ich habe nicht das ganze in Catia enthaltene Dassault Script studiert, sondern nur den gezeigten Schnipsel, deshaln ist es möglich dass ich völlig auf dem Holzweg bin. Aber in der Schleife geht er doch jedesmal einen Schritt nach oben im Baum bis er als Typ des aktuellen Elements (das sich bei jedem Schleifendurchlauf ändert!) ein "Part" oder "Product" findet: vorletzte Zeile "Set ViewDocument = ViewDocument.Parent" Insofern scheint mir die Schleife nicht grundsätzlich sinnlos? Nur warum es ausgerechtet maximal 8 Durchläufe sind erschließt sich mir nicht; vielleicht ist das eine typische maximale Anzahl von Feature-Stufen im Baum? Sorry, ich will nicht zur Verwirrung beitragen; Verstehen wäre aber ganz nett :-) salu' tobul Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 12005 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 26. Okt. 2022 10:08 <-- editieren / zitieren --> Unities abgeben: Nur für panchito
Servus tobul Danke für deinen Hinweis. Ich hab mir nun nochmal den Code angeschaut. Ich vermute dass die Schleife verwendet wird um bei einer Zeichnungsansicht auch den Fall abzufangen, wenn eine Szene oder nur selektierte Körper aus einem Part angezeigt werden. Die Verwendung von einer For-Schleife finde ich da eher unpassend, eine zB do-Until wäre wohl angebrachter (mit dem Abfangen wenn bis zur Catia-Application hoch iteriert wird) Vermutlich wäre es auch ohne die Schleife möglich (eine weitere Else-Verzweigung) Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ptit.tom Mitglied CAD-Berater
Beiträge: 115 Registriert: 11.02.2005 win10, CATIA R19 bis R30
|
erstellt am: 26. Okt. 2022 15:11 <-- editieren / zitieren --> Unities abgeben: Nur für panchito
laut Doku kann View.GenerativeBehavior.Document auch ein Body liefern. Deswegen die Schleife mit .parent um im Baum nach Oben zu navigieren. An der Stelle könnte das Product wahrscheinlich auch mit einer Selektion erfolgen. Element in einer Selektion hinzufügen und dann mit selectedElement.LeafProduct arbeiten. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
pusher Mitglied
Beiträge: 6 Registriert: 11.02.2021 Catia V5 R32
|
erstellt am: 26. Okt. 2022 22:29 <-- editieren / zitieren --> Unities abgeben: Nur für panchito
Ich habe die Schleife nun an einer etwas früheren Stelle gestartet, so dass mehrere Views (view(i)) durchlaufen werden. Das macht aus meiner Sicht mehr Sinn, da es mir darum geht eine Ansicht zu finden, die von einem Part/Product abgeleitet wurde damit das Gewicht ermittelt werden kann. Wenn ich nichts ändere und View(3) wurde als einfache Ansicht (ohne Verknüpfung zum 3D) erstellt, wird natürlich auch kein Gewicht geliefert. Durchläuft die Schleife mehrere Views, ist die Trefferwahrscheinlichkeit höher. Gruß Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |