Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Länge eines Joins aus Linien messen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Länge eines Joins aus Linien messen (2787 mal gelesen)
theshadog
Mitglied



Sehen Sie sich das Profil von theshadog an!   Senden Sie eine Private Message an theshadog  Schreiben Sie einen Gästebucheintrag für theshadog

Beiträge: 61
Registriert: 18.03.2009

erstellt am: 16. Jun. 2009 11:21    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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



Sehen Sie sich das Profil von zoltan.bekesi an!   Senden Sie eine Private Message an zoltan.bekesi  Schreiben Sie einen Gästebucheintrag für zoltan.bekesi

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für theshadog 10 Unities + Antwort hilfreich

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



Sehen Sie sich das Profil von theshadog an!   Senden Sie eine Private Message an theshadog  Schreiben Sie einen Gästebucheintrag für theshadog

Beiträge: 61
Registriert: 18.03.2009

erstellt am: 17. Jun. 2009 17:14    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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



Sehen Sie sich das Profil von zoltan.bekesi an!   Senden Sie eine Private Message an zoltan.bekesi  Schreiben Sie einen Gästebucheintrag für zoltan.bekesi

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für theshadog 10 Unities + Antwort hilfreich

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



Sehen Sie sich das Profil von theshadog an!   Senden Sie eine Private Message an theshadog  Schreiben Sie einen Gästebucheintrag für theshadog

Beiträge: 61
Registriert: 18.03.2009

erstellt am: 17. Jun. 2009 21:38    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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



Sehen Sie sich das Profil von theshadog an!   Senden Sie eine Private Message an theshadog  Schreiben Sie einen Gästebucheintrag für theshadog

Beiträge: 61
Registriert: 18.03.2009

erstellt am: 19. Jun. 2009 09:50    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz