Autor
|
Thema: Repost- Macro für Text with Leader (3839 mal gelesen)
|
Xlade1991 Mitglied Technischer Produktdesigner
Beiträge: 12 Registriert: 23.01.2014 Catia V5 R19 Windows 7 Professional 64bit Intel Core i5-3570 3.40 GHz 16 GB RAM Nvidia Quadro 600
|
erstellt am: 24. Jan. 2014 08:29 <-- editieren / zitieren --> Unities abgeben:
Hallo Zusammen, Ich versuche mir ein Macro in Catia V5 R19 zu erstellen welches mir im Generative Shape Design die X / Y / Z Koordinaten von einem Punkt ausliest und diese dann in einen 3D-Text (Annotation -> Text with Leader) an den Punkt schreibt. Ich stell mir das in etwa so vor das ich einen oder auch alle Punkt markiere dann das Macro starte und Catia mir den "Text with Leader" erstellt. Sollte dann ungefähr so in der Definition aussehen: Names des Punktes X= .... Y=-.... Z= .... Bisher konnte ich mir nur ein Macro aufnehmen welches mir immer wieder den gleichen Punkt anwählt und auch immer wieder das Gleich dran schreibt sobald ich das Macro starte Gruß, Xlade1991 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
moppesle Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 3418 Registriert: 28.05.2009 CATIA V5 R19 SP9 WIN 7 64bit
|
erstellt am: 24. Jan. 2014 09:22 <-- editieren / zitieren --> Unities abgeben: Nur für Xlade1991
|
imation1999 Mitglied dipl.-ing. Maschinenbau
Beiträge: 276 Registriert: 02.08.2011 Dell Precision T3500 Intel® Xeon® Quad Core NVIDIA Quadro® 5000 Win7 x64 Ultimate CATIA V5 R20 SP2
|
erstellt am: 24. Jan. 2014 09:29 <-- editieren / zitieren --> Unities abgeben: Nur für Xlade1991
|
moppesle Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 3418 Registriert: 28.05.2009 CATIA V5 R19 SP9 WIN 7 64bit
|
erstellt am: 24. Jan. 2014 09:35 <-- editieren / zitieren --> Unities abgeben: Nur für Xlade1991
|
imation1999 Mitglied dipl.-ing. Maschinenbau
Beiträge: 276 Registriert: 02.08.2011 Dell Precision T3500 Intel® Xeon® Quad Core NVIDIA Quadro® 5000 Win7 x64 Ultimate CATIA V5 R20 SP2
|
erstellt am: 24. Jan. 2014 09:39 <-- editieren / zitieren --> Unities abgeben: Nur für Xlade1991
|
moppesle Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 3418 Registriert: 28.05.2009 CATIA V5 R19 SP9 WIN 7 64bit
|
erstellt am: 24. Jan. 2014 09:44 <-- editieren / zitieren --> Unities abgeben: Nur für Xlade1991
|
Xlade1991 Mitglied Technischer Produktdesigner
Beiträge: 12 Registriert: 23.01.2014 Catia V5 R19 Windows 7 Professional 64bit Intel Core i5-3570 3.40 GHz 16 GB RAM Nvidia Quadro 600
|
erstellt am: 24. Jan. 2014 13:02 <-- editieren / zitieren --> Unities abgeben:
Hallo , hier das Macro welches ich erstellt habe Ich sehe zwar das Problem aber ich weis nicht wie man das anders Aufnehmen kann oder umschreiben kann. Ausserdem nimmt das Macro den Attribute Link nicht den ich versucht habe zu benutzen. Also Messung eines Punktes dann den Text with Leader erstellen und die Koordinaten aus der Messung übernehmen. ------------------------------------------ Language="VBSCRIPT" Sub CATMain() Set partDocument1 = CATIA.ActiveDocument Set part1 = partDocument1.Part Set annotationSets1 = part1.AnnotationSets Set annotationSet1 = annotationSets1.Add("CEG1_3D") Set hybridBodies1 = part1.HybridBodies Set hybridBody1 = hybridBodies1.Item("Messplanung") Set hybridBodies2 = hybridBody1.HybridBodies Set hybridBody2 = hybridBodies2.Item("Weitere Messmerkmale") Set hybridBodies3 = hybridBody2.HybridBodies Set hybridBody3 = hybridBodies3.Item("H0003 Messpunkte in X") Set hybridShapes1 = hybridBody3.HybridShapes Set hybridShapePointOnCurve1 = hybridShapes1.Item("FPT_L_0004") Set reference1 = part1.CreateReferenceFromObject(hybridShapePointOnCurve1) Set userSurfaces1 = part1.UserSurfaces Set userSurface1 = userSurfaces1.Generate(reference1) Dim bSTR1 bSTR1 = part1.Name Set annotationFactory1 = annotationSet1.AnnotationFactory Set annotation1 = annotationFactory1.CreateEvoluateText(userSurface1, 2202.831589, 863.309372, -97.278687, True) annotation1.Text.Text = "" & vbLf & "X= 2188,689 " & vbLf & "Y=-655,721" & vbLf & "Z= 849,167" part1.Update Set partDocument1 = CATIA.ActiveDocument Set selection1 = partDocument1.Selection selection1.Clear Dim anyObject1 ' No resolution found for the object anyObject1... selection1.Add anyObject1 selection1.Delete End Sub ----------------------------------- Danke schon mal für die Antworten Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
imation1999 Mitglied dipl.-ing. Maschinenbau
Beiträge: 276 Registriert: 02.08.2011 Dell Precision T3500 Intel® Xeon® Quad Core NVIDIA Quadro® 5000 Win7 x64 Ultimate CATIA V5 R20 SP2
|
erstellt am: 24. Jan. 2014 13:21 <-- editieren / zitieren --> Unities abgeben: Nur für Xlade1991
Keine Assoziativität!1) Punkte selektieren 2) Makro laufen lassen 3) Code:
Language="VBSCRIPT"Sub CATMain() Set partDocument1 = CATIA.ActiveDocument Set part1 = partDocument1.Part Set annotationSets1 = part1.AnnotationSets Set annotationSet1 = annotationSets1.Add("CEG1_3D") Set selection1 = CATIA.ActiveDocument.Selection ReDim acoord(2) for i =1 to selection1.count Set reference1 = part1.CreateReferenceFromObject(selection1.item(i).value) selection1.item(i).value.GetCoordinates acoord Set userSurfaces1 = part1.UserSurfaces Set userSurface1 = userSurfaces1.Generate(reference1) Dim bSTR1 bSTR1 = part1.Name Set annotationFactory1 = annotationSet1.AnnotationFactory Set annotation1 = annotationFactory1.CreateEvoluateText(userSurface1, 2202.831589+i*50, 863.309372, -97.278687, True) annotation1.Text.Text = "" & vbLf & "X=" & acoord(0) & "mm" & vbLf & "Y=" & acoord(1) & "mm" & vbLf & "Z=" & acoord(2) & "mm" next part1.Update End Sub
[Diese Nachricht wurde von imation1999 am 24. Jan. 2014 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Xlade1991 Mitglied Technischer Produktdesigner
Beiträge: 12 Registriert: 23.01.2014 Catia V5 R19 Windows 7 Professional 64bit Intel Core i5-3570 3.40 GHz 16 GB RAM Nvidia Quadro 600
|
erstellt am: 24. Jan. 2014 14:08 <-- editieren / zitieren --> Unities abgeben:
|
imation1999 Mitglied dipl.-ing. Maschinenbau
Beiträge: 276 Registriert: 02.08.2011 Dell Precision T3500 Intel® Xeon® Quad Core NVIDIA Quadro® 5000 Win7 x64 Ultimate CATIA V5 R20 SP2
|
erstellt am: 24. Jan. 2014 14:14 <-- editieren / zitieren --> Unities abgeben: Nur für Xlade1991
|
Xlade1991 Mitglied Technischer Produktdesigner
Beiträge: 12 Registriert: 23.01.2014 Catia V5 R19 Windows 7 Professional 64bit Intel Core i5-3570 3.40 GHz 16 GB RAM Nvidia Quadro 600
|
erstellt am: 24. Jan. 2014 14:52 <-- editieren / zitieren --> Unities abgeben:
|
Trilemma Mitglied staatl. gepr. Techniker
Beiträge: 254 Registriert: 20.08.2010 Catia V5 R19 SP8 Windows7 64bit 12GB 2,93GHz Dell Precision T3500
|
erstellt am: 27. Jan. 2014 07:58 <-- editieren / zitieren --> Unities abgeben: Nur für Xlade1991
|
Xlade1991 Mitglied Technischer Produktdesigner
Beiträge: 12 Registriert: 23.01.2014 Catia V5 R19 Windows 7 Professional 64bit Intel Core i5-3570 3.40 GHz 16 GB RAM Nvidia Quadro 600
|
erstellt am: 27. Jan. 2014 08:59 <-- editieren / zitieren --> Unities abgeben:
Ok gewusst wie Nur das Macro schreibt mir alle stellen hinter den Komma in die Annotation rein. Kann man das evtl. irgendwie einkürzen bis auf 3 stellen hinter dem Komma? Und wäre es möglich den Namen des ausgewählten Punktes auch in die erste Zeile zu schreiben? Vielen Dank schon mal für die Hilfe =) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas Harmening Ehrenmitglied V.I.P. h.c. Arbeiter ツ
Beiträge: 2897 Registriert: 06.07.2001 NX 10 Win 7
|
erstellt am: 27. Jan. 2014 09:05 <-- editieren / zitieren --> Unities abgeben: Nur für Xlade1991
|
Xlade1991 Mitglied Technischer Produktdesigner
Beiträge: 12 Registriert: 23.01.2014 Catia V5 R19 Windows 7 Professional 64bit Intel Core i5-3570 3.40 GHz 16 GB RAM Nvidia Quadro 600
|
erstellt am: 27. Jan. 2014 09:40 <-- editieren / zitieren --> Unities abgeben:
|
Xlade1991 Mitglied Technischer Produktdesigner
Beiträge: 12 Registriert: 23.01.2014 Catia V5 R19 Windows 7 Professional 64bit Intel Core i5-3570 3.40 GHz 16 GB RAM Nvidia Quadro 600
|
erstellt am: 27. Jun. 2014 10:48 <-- editieren / zitieren --> Unities abgeben:
Hallo Zusammen, ich habe nun mein Macro noch einmal erweitert komme aber leider nicht weiter... Und zwar versuche ich einen bestimmten Wert der bei den Punkten Hinterlegt ist in den Text zu integrieren. Ich habe mal ein Bild angehängt in dem der Wert den ich mit ins macro schreiben will mit einem Roten Kästchen markiert habe. Dieser Wert ist von Punkt zu Punkt unterschiedlich.´ Weiß jemand von euch vielleicht welchen Befehl ich ins Macro schreiben muss da mit mir dieses den jeweiligen Wert in den Text schreibt? Danke schon mal Gruß, Xlade1991 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: 29. Jun. 2014 20:13 <-- editieren / zitieren --> Unities abgeben: Nur für Xlade1991
Servus Ich würde folgender weise auf den Parameterwert zugreifen: - entsprechende Parameter die unter dem Punkt "hängen" mit der Funktion "Sublist" ermitteln - Schleife über diese Liste laufen lassen und den entsprechenden Parameter per Namen ermitteln - Wert in den Textschreiben bzw zunächst in Variable zwischenspeichern Gruß Bernd
------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Xlade1991 Mitglied Technischer Produktdesigner
Beiträge: 12 Registriert: 23.01.2014 Catia V5 R19 Windows 7 Professional 64bit Intel Core i5-3570 3.40 GHz 16 GB RAM Nvidia Quadro 600
|
erstellt am: 30. Jun. 2014 13:36 <-- editieren / zitieren --> Unities abgeben:
Hallo Bernd, diese Sublist Funktion kenne ich leider noch nicht oder meinst du im Kontextmenü ( Rechte Maustaste auf den Parameter) Open Sub-Tree? Ich kenne mich da leider noch nicht so aus. Kannst du mir das bitte einmal ausführlicher erklären? =) Gruß, Xlade1991 [Diese Nachricht wurde von Xlade1991 am 30. Jun. 2014 editiert.] 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: 30. Jun. 2014 16:04 <-- editieren / zitieren --> Unities abgeben: Nur für Xlade1991
Servus Aufbauend auf den Code von imation1999: Code: Set oParameters = part1.ParametersSet GesuchterParameter = oParameters.SubList(selection1.Item2(i).Value, False).Item("TOLn_o") MsgBox GesuchterParameter.Name & " = " & GesuchterParameter.ValueAsString
Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Xlade1991 Mitglied Technischer Produktdesigner
Beiträge: 12 Registriert: 23.01.2014 Catia V5 R19 Windows 7 Professional 64bit Intel Core i5-3570 3.40 GHz 16 GB RAM Nvidia Quadro 600
|
erstellt am: 01. Jul. 2014 11:32 <-- editieren / zitieren --> Unities abgeben:
Also irgendwie komme ich damit auch nicht weiter.. Habe jetzt einfach Makros mit den häufigsten auftauchenden Toleranzen erstellt und mir eine Toolbar angelegt. Wenn sonst noch einer einen Rat weiß? Ansonsten schon mal Danke! Gruß, Xlade1991 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: 01. Jul. 2014 11:49 <-- editieren / zitieren --> Unities abgeben: Nur für Xlade1991
Servus Wie kommst du damit nicht weiter? Wie hast du den Code eingebaut? (bei meinem Test hat der Code funktioniert) Was willst du überhaupt erreichen? Gruß Bernd
------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Xlade1991 Mitglied Technischer Produktdesigner
Beiträge: 12 Registriert: 23.01.2014 Catia V5 R19 Windows 7 Professional 64bit Intel Core i5-3570 3.40 GHz 16 GB RAM Nvidia Quadro 600
|
erstellt am: 01. Jul. 2014 14:48 <-- editieren / zitieren --> Unities abgeben:
Ich arbeite bei einem Automobilzulieferer und unter anderem stellen wir Teile für BMW her. Für diese Artikel-Daten werden von mir CA-Messpläne definiert. D.h. ich definiere in zusammen arbeit mit unserer QMT die Position der Messpunkte auf der Oberflächen der Bauteile. Diese werden anschließend mit einem BMW-Zulieferer Tool mit Eigenschaften belegt. Bei manchen Bauteilen kommen da dann schon mal schnell an die 100 Messpunkte zusammen. Da unsere QMT mit Catia nichts anfangen kann erstelle ich JT-Daten wo sie die Annotations der einzelnen Punkte anzeigen lassen können. Diese enthalten dann Name, Toleranz und Koordinaten der entsprechenden Punkte. Zu diesem zweck habe ich mir erst einmal selber versucht ein Macro zu schreiben und mir anschließend im Forum hier hilfe gesucht. Aktuell sieht das Macro wie folgt aus. Code: ______________________________________________________________________ Language="VBSCRIPT" Sub CATMain() Set partDocument1 = CATIA.ActiveDocument Set part1 = partDocument1.Part Set annotationSets1 = part1.AnnotationSets Set annotationSet1 = annotationSets1.Add("CEG1_3D") Set selection1 = CATIA.ActiveDocument.Selection ReDim acoord(2) for i =1 to selection1.count Set reference1 = part1.CreateReferenceFromObject(selection1.item(i).value) selection1.item(i).value.GetCoordinates acoord Set userSurfaces1 = part1.UserSurfaces Set userSurface1 = userSurfaces1.Generate(reference1) Dim bSTR1 bSTR1 = part1.Name Set annotationFactory1 = annotationSet1.AnnotationFactory Set annotation1 = annotationFactory1.CreateEvoluateText(userSurface1, 2202.831+i*50, 863.309, -97.278, True) annotation1.Text.Text = reference1.DisplayName & vbLf & "Toleranz ± 0,5 mm" & vbLf & "X= " & Round(acoord(0), 3) & " mm" & vbLf & "Y=" & Round(acoord(1), 3) & " mm" & vbLf & "Z= " & Round(acoord(2), 3) & " mm" next part1.Update End Sub ______________________________________________________________________ Dort wo jetzt " Toleranz ± 0,5 mm" steht würde ich gerne ein einen Wert aus dem Punkt auslesen. Das ganze sollte dann ungefähr so aussehen: .....& " Toleranz ± " & (Wert von TOLn-o(1,2) des Punktes auslesen) & vbLf & ......
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas Harmening Ehrenmitglied V.I.P. h.c. Arbeiter ツ
Beiträge: 2897 Registriert: 06.07.2001 NX 10 Win 7
|
erstellt am: 01. Jul. 2014 18:54 <-- editieren / zitieren --> Unities abgeben: Nur für Xlade1991
Na, so schwer ist das mit Bernds Vorlage nicht. Code: Sub CATMain()Set partDocument1 = CATIA.ActiveDocument Set part1 = partDocument1.Part Set annotationSets1 = part1.AnnotationSets Set annotationSet1 = annotationSets1.Add("CEG1_3D") Set selection1 = partDocument1.Selection ReDim acoord(2) For i = 1 To selection1.Count Set reference1 = part1.CreateReferenceFromObject(selection1.Item(i).Value) selection1.Item(i).Value.GetCoordinates acoord Set userSurfaces1 = part1.UserSurfaces Set userSurface1 = userSurfaces1.Generate(reference1) Set annotationFactory1 = annotationSet1.AnnotationFactory Set annotation1 = annotationFactory1.CreateEvoluateText(userSurface1, 2202.831 + i * 50, 863.309, -97.278, True) Set oParameters = part1.Parameters Set GesuchterParameter = oParameters.SubList(selection1.Item2(i).Value, False).Item("TOLn_o") 'MsgBox GesuchterParameter.Name & " = " & GesuchterParameter.ValueAsString annotation1.Text.Text = reference1.DisplayName & vbLf & "TOLn_o= " & GesuchterParameter.ValueAsString & vbLf & "Toleranz ± 0,5 mm" & vbLf & "X= " & Round(acoord(0), 3) & " mm" & vbLf & "Y=" & Round(acoord(1), 3) & " mm" & vbLf & "Z= " & Round(acoord(2), 3) & " mm" Next part1.Update End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| |
catia5beginervbs Mitglied
Beiträge: 22 Registriert: 02.09.2015 Windows 7, Excel 2010,Catia 5.21
|
erstellt am: 21. Mrz. 2019 10:11 <-- editieren / zitieren --> Unities abgeben: Nur für Xlade1991
Moinsen, ich habe einen neuen part angelegt mit einem geometrical set und dort einen punkt gesetzt mit Koordinate 15000,9000,6000 diesen punkt selectiert und das macro benutzt. Der Textpfeil liegt am punkt aber der text selbst ist kilometerweit entfernt. Wie bekomme ich den Text in die nähe des punktes. Ich möchte die Längen der einzelen curves von einem elektr. bündel in das 3d schreiben, das Problem ist das ich den text nicht in die nähe bekomme Sub CATMain() Set CATIA = GetObject(, "CATIA.Application") Set partDocument1 = CATIA.ActiveDocument Set part1 = partDocument1.Part Set annotationSets1 = part1.AnnotationSets Set annotationSet1 = annotationSets1.Add("CEG1_3D") Set selection1 = CATIA.ActiveDocument.Selection ReDim acoord(2) For i = 1 To selection1.Count Set reference1 = part1.CreateReferenceFromObject(selection1.Item(i).Value) selection1.Item(i).Value.GetCoordinates acoord Set userSurfaces1 = part1.UserSurfaces Set userSurface1 = userSurfaces1.Generate(reference1) Dim bSTR1 bSTR1 = part1.Name Set annotationFactory1 = annotationSet1.AnnotationFactory Set annotation1 = annotationFactory1.CreateEvoluateText(userSurface1, _ acoord(0), _ acoord(1), _ acoord(2), _ True) annotation1.Text.Text = "Dies ist ein Text" Next part1.Update End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |