Autor
|
Thema: AnnotationTextWithLeader (7688 mal gelesen)
|
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: 28. Mrz. 2012 16:53 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich habe mal wieder ein nicht so triviales Problem. :-) - man ich sammle die Dinger :-D Wie der Titel schon sagt geht's um FT&A, ja meine lieblings Workbench, da sind Probleme schon vorprogrammiert. Einfach Szenario zum nachstellen: Ich hänge eine Datei an, welche das Problem verdeutlicht und habe dazu einfach ein Makro aufgezeichnet, welches einen TextWithLeader an der Fläche erzeugt. Mein Code ist natürlich anders, aber die Makroaufzeichnung ist unverfänglich und von jedem nachstellbar. Wenn man das Makro nun ausführt, so wird ein TextWithLeader mit Link auf die Fläche erzeugt, der Text ist jedoch fehlerhaft und zeigt an die falsche Stelle. Der Fehler, der kommt ist: Defined rule : Associative Leader Disconnected Description : An associative leader is not pointing the referenced geometry Correction : Change Annotation position to reconnect leader Ich melde es seperat an Dassault, aber vielleicht hat einer von euch schon eine Idee, wie ich so nen einfachen TextWithLeader an die Fläche bekomme, via VBA. :-) Der Code, aus der Makroaufzeichnung sieht so aus:
Code:
Sub CATMain()Dim partDocument1 As PartDocument Set partDocument1 = CATIA.ActiveDocument Dim part1 As Part Set part1 = partDocument1.Part Dim annotationSets1 As AnnotationSets Set annotationSets1 = part1.AnnotationSets Dim annotationSet1 As AnnotationSet Set annotationSet1 = annotationSets1.Add("VW3D") Dim userSurfaces1 As UserSurfaces Set userSurfaces1 = part1.UserSurfaces Dim hybridBodies1 As HybridBodies Set hybridBodies1 = part1.HybridBodies Dim hybridBody1 As HybridBody Set hybridBody1 = hybridBodies1.Item("Geometrical Set.1") Dim hybridShapes1 As HybridShapes Set hybridShapes1 = hybridBody1.HybridShapes Dim hybridShapeFill1 As HybridShapeFill Set hybridShapeFill1 = hybridShapes1.Item("Fill.2") Dim reference1 As Reference Set reference1 = part1.CreateReferenceFromBRepName("RSur:(Face:(Brp:(GSMFill.2);None:();Cf11:());WithTemporaryBody;WithoutBuildError;WithLastFeatureSupport;MFBRepVersion_CXR15)", hybridShapeFill1) Dim userSurface1 As UserSurface Set userSurface1 = userSurfaces1.Generate(reference1) Dim bSTR1 As String bSTR1 = part1.Name Dim annotationFactory1 As AnnotationFactory Set annotationFactory1 = annotationSet1.AnnotationFactory Dim annotation1 As Annotation Set annotation1 = annotationFactory1.CreateEvoluateText(userSurface1, 268.684167, -218.076362, 156.199997, True) annotation1.Text.Text = "Blubb" part1.Update End Sub
------------------ 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 |
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: 17. Apr. 2012 09:55 <-- editieren / zitieren --> Unities abgeben:
Antwort Dassault ist Code:
This is a user error.
Ich brauch also weiterhin eure Hilfe. :-( ------------------ 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 |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 17. Apr. 2012 23:18 <-- editieren / zitieren --> Unities abgeben: Nur für HoBLila
Servus Gemäß meinen Tests liegt es daran, dass der Leader nicht auf die Referenzfläche zeigt. Vermutlich muss man den HeadTarget (annotation1.Text.Get2dAnnot.Leaders.Item(1).HeadTarget) entsprechend anpassen. Wie das geht schweigt sich die Doku leider aus (siehe auch Leader im Drafting). Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. 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: 18. Apr. 2012 09:28 <-- editieren / zitieren --> Unities abgeben:
Hallo Bernd, der Ansatz gefällt mir. Bei der manuell erzeugten Annotation (die ja scheinbar richtig ist) ist der Wert aber auch: : HeadTarget : <The method HeadTarget failed> : CATBaseDispatch : Module5.CATMain Was mir aber nun aufgefallen ist: Wenn ich das part1.Update aus der letzten Zeile raus nehme, dann wird die Annotation immerhin erzeugt (sie ist weiß ohne Fehler und auf der richtigen Ebene) nur der Leader zeigt an die flasche Stelle. Edit: Okay ist dann nur okay bis ich ein Update auf das Part wirke :-) ------------------ 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 [Diese Nachricht wurde von HoBLila am 18. Apr. 2012 editiert.] 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: 18. Apr. 2012 09:44 <-- editieren / zitieren --> Unities abgeben:
Okay, ich glaub ich habe einen ganz passablen Workaround: Ich setze nen neuen Leader und hau den alten weg. Die Reihenfolge ist dabei wichtig: erst neu, dann alt. Code:
Set selWork = CATIA.ActiveDocument.Selection Set annotation1 = selWork.Item2(1).Value Set drwLeaders = annotation1.Text.Get2dAnnot.Leaders Set MyLeader = drwLeaders.Add(20, 80) Call drwLeaders.Remove(1)CATIA.ActiveDocument.Part.Update
Ist jetzt nur ein schnelles Beispiel. ------------------ 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 |
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: 15. Jun. 2012 14:15 <-- editieren / zitieren --> Unities abgeben:
Ich möchte hier noch einmal mit neuen Erkenntnissen anknüpfen. Und zwar tritt der Fehler auch manuell auf, wenn man nun noch einen PointOnPlane an die Stelle macht und die Annotation anhängt. Dann kann man auch die Geometrie des Leaders nicht mehr auf einen anderen PointOnPlane umhängen. Laut Dassault ist das das so gewollt. Aber: Wenn ich den PointOnPlane nun zu einem PointExplicit mache, die Annotation anhänge und dann wieder zu einem PointOnPlane, dann hat der Punkt die Stelle nie verlassen, die Annotation ist in Ordnung und assoziativ zum Punkt, welcher auf der Fläche ist. Ich habe dann zwar mehr Geometrie als nötig erzeugt, aber der User kann auch weiter normal damit arbeiten. ------------------ 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 |
BARTY Mitglied CAD/CAM Anwendung
Beiträge: 79 Registriert: 26.03.2003 XP 32 / Vista 64 CV5R19SP9
|
erstellt am: 06. Sep. 2012 12:23 <-- editieren / zitieren --> Unities abgeben: Nur für HoBLila
Hallo Zusammen, ich mache mich auch gerade in diesem Thema breit. Da im obigen Marco die Koordinaten fix sind kann es bei zu kleinen Flächen zu diesem Fehler kommen. Im Macro sollte vorher die Mittelpunktkoordinate der angewählten Fläche ermittelt werden. Diese Daten dann zum Erstellen des 3D-Textes und die Fehlermeldung sollte nicht mehr kommen. ------------------ BARTY ----------------------------------- Der IDEE ist egal von wem sie kommt Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KaiWa Mitglied Techniker Maschinenbau
Beiträge: 201 Registriert: 27.05.2004
|
erstellt am: 06. Sep. 2012 16:55 <-- editieren / zitieren --> Unities abgeben: Nur für HoBLila
|
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: 06. Sep. 2012 17:36 <-- editieren / zitieren --> Unities abgeben:
Hallo KaiWa, ich denke wir haben hier zwei völlig verschiedene Sachverhalte. Bei Dem von Dir gepostetem geht es darum, dass ein Objekt an der API nicht vorhanden ist. Bei dem Thema hier geht es darum, dass ein vorhandenes Objekt sind in einer bestimmten Konstellation (parallel zum View), manuell völlig anders verhält als automatisiert. Bei beiden hat sich Dassault allerdings so geäußert, dass es gewollt ist. Das mit dem Mittelpunkt verstehe ich nicht so ganz. :-( ------------------ 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 |
KaiWa Mitglied Techniker Maschinenbau
Beiträge: 201 Registriert: 27.05.2004
|
erstellt am: 06. Sep. 2012 19:58 <-- editieren / zitieren --> Unities abgeben: Nur für HoBLila
wollte eher darauf hinweisen das Dassault wohl keinerlei Bugfixing der doch recht teuren FTA Workbench macht. wenn ich solche Meldungen höre geht mir als Anwender das Messer im Sack hoch - Ich zahl eine schweine Geld für eine Lizenz und Dassault macht keinen Fingerstrech um hier den Kunden auch nur im entferntesten zu unterstützen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
BARTY Mitglied CAD/CAM Anwendung
Beiträge: 79 Registriert: 26.03.2003 XP 32 / Vista 64 CV5R19SP9
|
erstellt am: 11. Sep. 2012 12:42 <-- editieren / zitieren --> Unities abgeben: Nur für HoBLila
Hi, mit dem Mittelpunkt war es so gemeint: Dim hybridShapeFill1 As HybridShapeFill Set hybridShapeFill1 = hybridShapes1.Item("Fill.2") Dim reference1 As Reference Set reference1 = part1.CreateReferenceFromBRepName("RSur :frown:Face :frown:Brp :frown:GSMFill.2);None :frown:);Cf11 :frown:));WithTemporaryBody;WithoutBuildError;WithLastFeatureSupport;MFBRepVersion_CXR15)", hybridShapeFill1) Dim userSurface1 As UserSurface Set userSurface1 = userSurfaces1.Generate(reference1)
Hier die Mittelpunktkoordinaten (MPK) der reference1 herausfinden Dim bSTR1 As String bSTR1 = part1.Name Dim annotationFactory1 As AnnotationFactory Set annotationFactory1 = annotationSet1.AnnotationFactory
Dim annotation1 As Annotation Set annotation1 = annotationFactory1.CreateEvoluateText(userSurface1, MPK_X, MPK_Y, MPK_Z, True) annotation1.Text.Text = "Blubb" Die Fehlermeldung sollte dann nicht mehr auftauchen, da die Referenzfläche immer angewählt werden kann. Der Leader ist aber immer noch auf dem Nullpunkt. ------------------ BARTY ----------------------------------- Der IDEE ist egal von wem sie kommt
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: 11. Sep. 2012 12:48 <-- editieren / zitieren --> Unities abgeben:
Und das soll funktionieren? Sorry, aber ich kann es mir nur schwer vorstellen, dass das zum gewünschten Ergebnis führt. ------------------ 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 |
BARTY Mitglied CAD/CAM Anwendung
Beiträge: 79 Registriert: 26.03.2003 XP 32 / Vista 64 CV5R19SP9
|
erstellt am: 21. Sep. 2012 10:15 <-- editieren / zitieren --> Unities abgeben: Nur für HoBLila
Hi Lila, das funktioniert natürlich nicht Ich habe festgestellt, wenn man die View aus deinem Beispiel CATPart entfernt erzeugt Catia eine neue View wärend des Macros. Diese View liegt dann normal zur XY-Plane. Dann liegt der Bezugspunkt auf der Fläche. Die Textposition liegt dann auf den Koordinaten aus dem Macro. Sobald eine View parallel zur XY-Plane benutzt wird tritt dein oben erläuteter Fehler auf. Sorry
------------------ BARTY ----------------------------------- Der IDEE ist egal von wem sie kommt Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |