Autor
|
Thema: Länge eines Joins aus Linien messen (2787 mal gelesen)
|
theshadog Mitglied
Beiträge: 61 Registriert: 18.03.2009
|
erstellt am: 16. Jun. 2009 11:21 <-- editieren / zitieren --> Unities abgeben:
Hi, hab folgendes Problem: Ich hab einen Join(Verbindung), in dem lauter Linien und Splines miteinander verknüpft sind. Ich möchte die Länge aller Linien auslesen. Per Hand geht das Super. Aber wo liegt mein Fehler im Makro? Code: ' LBjoin vermessen Dim LBjoin As HybridShapeAssemble Set LBjoin = hybridShapes1.Item("LBJoin") Dim MessRef as Reference Set MessRef = part1.CreateReferenceFromObject(LBjoin)Set SPAWb = CATIA.ActiveDocument.GetWorkbench("SPAWorkbench") Set messen = SPAWb.GetMeasurable(MessRef) Dim laenge As Double laenge = messen.Length
Danke für jede Hilfe! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
zoltan.bekesi Mitglied
Beiträge: 321 Registriert: 22.10.2006 Job: CATIA V5R19 / XP 32bit MS Office 2003 Microstation V8 2004 Edition DELL Precision M6300
|
erstellt am: 16. Jun. 2009 18:08 <-- editieren / zitieren --> Unities abgeben: Nur für theshadog
Hallo, wo liegt dein Problem? Dein Makro sollte die Gesamtlänge des Joins vermessen. Nur eine Untermenge der verbindeten Kurven zu messen wirst du nur hinkriegen, indem du durch die Elemente iterierst und bei jede einzelne den Typ prüfst/Länge nachmesst. Falls du diesen Weg gehen möchtest, sind folgende Einträge aus V5Automation.chm nützlich: -Func GetElement( long iRank) As CATIAReference : Zugriff auf die Einzelelemente -Func GetElementsSize( ) As long -bzw Property GeometryName( ) As CatMeasurableName (Read Only): Sagt aus, ob die gerade gemessene Objekt eine Linie ist oder was anderes. Gruß, Zoltan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
theshadog Mitglied
Beiträge: 61 Registriert: 18.03.2009
|
erstellt am: 17. Jun. 2009 17:14 <-- editieren / zitieren --> Unities abgeben:
Hallo, das Problem ist, dass mir eine Fehlermeldung in der Zeile ausgeworfen wird:
Code: laenge = messen.Length
"Das Verfahren Length ist fehlgeschlagen." Sorry, ich versteh deinen Beitrag nicht 100%. Du sagst, dass das Makro so funktionieren sollte, wenn ich aber auf eine Untergruppe von Linien im Join zugreifen will, muss ich die von dir genannten Funktionen verwenden? Hab ich das richtig verstanden oder geht mein Makro so generell nicht? Wenn dann versteh ich nicht ganz warum. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
zoltan.bekesi Mitglied
Beiträge: 321 Registriert: 22.10.2006 Job: CATIA V5R19 / XP 32bit MS Office 2003 Microstation V8 2004 Edition DELL Precision M6300
|
erstellt am: 17. Jun. 2009 18:54 <-- editieren / zitieren --> Unities abgeben: Nur für theshadog
Hallo theshadog, also bei mir funktioniert folgender Code (deines um ein Paar Zeilen ergänzt) einwandfrei: Code: Sub catmain() Dim Part1 As Part Set Part1 = CATIA.ActiveDocument.Part Dim hybridShapes1 As HybridShapes Set hybridShapes1 = Part1.HybridBodies.Item(5).HybridShapes ' LBjoin vermessen Dim LBjoin As HybridShapeAssemble Set LBjoin = hybridShapes1.Item("LBJoin") Dim MessRef As Reference Set MessRef = Part1.CreateReferenceFromObject(LBjoin) Dim SPAWb As SPAWorkbench 'evtl diesen Datentyp löschen Set SPAWb = CATIA.ActiveDocument.GetWorkbench("SPAWorkbench") Dim messen As Measurable 'evtl diesen Datentyp löschen Set messen = SPAWb.GetMeasurable(MessRef) Dim laenge As Double laenge = messen.Length End Sub
unter R19 und VBA. Kannst evtl. den Trick mit Variablentyp auskommentieren anwenden. Das messt aber die Gesamtlänge des Joins.Den Join besteht aus n Stück Splines und m Stück Linien in beliebiger Reihenfolge, hast du geschrieben. Wenn du nur die Länge aller Linien haben möchtest, dann ist dazu dein Code nicht geeignet. Dann musst du dir die Elemente des Joins -suchen -> Schleife über Set MessRef = LBjoin.GetElement(i), i geht von 1 bis LBjoin.GetElementsSize In der Schleife +einzeln Typ abfragen (Linie oder nicht) -> Set messen = SPAWb.GetMeasurable(MessRef); messen. GeometryName = CatMeasurableLine -> Messen +einzeln messen -> das hast du schon geschrieben +Messergebnisse summieren. -> das müsste auch einfach sein Dazu brauchst du dann die Teile aus meinen vorigen Beitrag. Ich hoffe, das ich diesmal schon verständlicher war. Gruß, Zoltan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
theshadog Mitglied
Beiträge: 61 Registriert: 18.03.2009
|
erstellt am: 17. Jun. 2009 21:38 <-- editieren / zitieren --> Unities abgeben:
Ja, ich möchte die Gesamtmenge des Joins. Werde es nochmal mit den Änderungen von dir probieren und hoffe dass es dann geht. Wenn du das hinbekommst, müsste es bei mir ja auch gehen. Danke für deine Mühe! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
theshadog Mitglied
Beiträge: 61 Registriert: 18.03.2009
|
erstellt am: 19. Jun. 2009 09:50 <-- editieren / zitieren --> Unities abgeben:
Also ich hab jetzt noch etwas rumprobiert. Aber offensichtlich liegt das nicht am Makro, sondern am Join selbst. Ich kann die Länge zwar seltsamerweise manuell bestimmen, aber per Makro geht das nicht. Bei einem einfach Join mit 3 Linien funktioniert das Makro, nur bei dieser - zugegeben etwas komplexeren - Anordnung von Linen und Splines geht es offensichtlich nur per Hand. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |