Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  MultiOutput Elemente

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:  MultiOutput Elemente (1672 mal gelesen)
dc_tke
Mitglied



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

Beiträge: 23
Registriert: 07.07.2003

erstellt am: 19. Apr. 2007 11:31    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,

ich habe von einem MultiOutput Element (Intersect -> 2 Punkte) eine Referenz ezeugt und davon wieder ein PointDatum.

Nun möchte ich an die Koordinaten des PointDatum kommen. Mit Measurable bekomme ich den Typ 0=CATMeasurableUnknown.

Hat jemand eine Idee?

Mit beiliegendem Skript kann man das Scenario aufbauen:


Sub CATMain()

Set documents1 = CATIA.Documents
Set partDocument1 = documents1.Add("Part")
Set part1 = partDocument1.Part
Set hybridBodies1 = part1.HybridBodies
Set hybridBody1 = hybridBodies1.Add()
Set hybridShapeFactory1 = part1.HybridShapeFactory

Set hybridShapePointCoord1 = hybridShapeFactory1.AddNewPointCoord(0.000000, 0.000000, 0.000000)
hybridBody1.AppendHybridShape hybridShapePointCoord1
part1.InWorkObject = hybridShapePointCoord1
part1.Update

Set reference2 = part1.CreateReferenceFromObject(hybridShapePointCoord1)
Set hybridShapeDirection1 = hybridShapeFactory1.AddNewDirectionByCoord(0.000000, 0.000000, 1.000000)
Set hybridShapeLinePtDir1 = hybridShapeFactory1.AddNewLinePtDir(reference2, hybridShapeDirection1,-200.000000, 200.000000, False)
hybridBody1.AppendHybridShape hybridShapeLinePtDir1
part1.InWorkObject = hybridShapeLinePtDir1
part1.Update

Set reference3 = part1.CreateReferenceFromObject(hybridShapePointCoord1)
Set hybridShapeSphere1 = hybridShapeFactory1.AddNewSphere(reference3, Nothing, 20.000000, -45.000000, 45.000000, 0.000000, 180.000000)
hybridShapeSphere1.Limitation = 1
hybridBody1.AppendHybridShape hybridShapeSphere1
part1.InWorkObject = hybridShapeSphere1
part1.Update

Set reference4 = part1.CreateReferenceFromObject(hybridShapeLinePtDir1)
Set reference5 = part1.CreateReferenceFromObject(hybridShapeSphere1)
Set hybridShapeIntersection1 = hybridShapeFactory1.AddNewIntersection(reference4, reference5)
hybridShapeIntersection1.PointType = 0
hybridBody1.AppendHybridShape hybridShapeIntersection1
part1.InWorkObject = hybridShapeIntersection1
part1.Update

set reference6 = part1.createReferenceFromObject (hybridShapeIntersection1)
Set hybridShapePointDatum1 = hybridShapeFactory1.AddNewPointDatum(reference6)
hybridBody1.AppendHybridShape  hybridShapePointDatum1
part1.update

Set reference7 = part1.createReferenceFromObject (hybridShapePointDatum1)
    Set TheSPAWorkbench = CATIA.ActiveDocument.GetWorkbench("SPAWorkbench")
    Set TheMeasurable = TheSPAWorkbench.GetMeasurable(reference7)

    Msgbox TheMeasurable.Name & vblf & Typename(TheMeasurable) & vblf & TheMeasurable.GeometryName

End Sub

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CAMiCADse
Mitglied



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

Beiträge: 177
Registriert: 17.02.2006

V5,R19,SP9

erstellt am: 19. Apr. 2007 12:51    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 dc_tke 10 Unities + Antwort hilfreich

Hallo dc_tke,

dein DatumPoint besteht aus 2 Punkten, da du beim Erzeugen als Reference die Intersection übergeben hast.

Hol dir vorher mit Near die einzelnen Punkte aus der Intersection, dann sollte es klappen.

Gruß
CAMiCADse

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

dc_tke
Mitglied



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

Beiträge: 23
Registriert: 07.07.2003

erstellt am: 19. Apr. 2007 13:18    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,

gerade das kann ich nicht. Die Historie ist ja normalerweise weg.

Gruß Thomas

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CAMiCADse
Mitglied



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

Beiträge: 177
Registriert: 17.02.2006

V5,R19,SP9

erstellt am: 19. Apr. 2007 13: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 Nur für dc_tke 10 Unities + Antwort hilfreich

Hi,

was meinst du damit? 

Wenn du keine Intersection (mehr) hast, dann wende doch das Near auf deinen "Doppel-DatumPoint" an.

Gruß
CAMiCADse

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

dc_tke
Mitglied



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

Beiträge: 23
Registriert: 07.07.2003

erstellt am: 19. Apr. 2007 14:12    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

Ich habe also den "Mehrfachpunkt" und sonst nichts.
Jetzt möchte ich von ALLEN Punkten (Subelemente) die Koordinaten.

Mit NEAR kann ich das Ergebnis auf einen Punkt reduzieren,
ich möchte aber alle Punkte erwischen. 


Gruß Thomas

P.S.: Das ganze soll auch unter HP-UX laufen.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

tomtom1972
Mitglied
dipl ing maschinenbau


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

Beiträge: 605
Registriert: 22.03.2005

NVidia Quadro K4000
Intel Xeon E5-1620, 64GB RAM
Windows10 64bit
R30 <= CATIA V5 > =R19

erstellt am: 20. Apr. 2007 20:28    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 dc_tke 10 Unities + Antwort hilfreich

Hallo dc_tke,

du musst das Datum anders erzeugen und das Measurable des Punktes in deinem Code ist auch falsch.
zu (1)
Die Funktion zum Isolieren des Multi-Elemets, die du benötigst ist
   AddNewDatums(CATIAReference  iElem) As CATSafeArrayVariant 
zu (2)
Die Funktion zum Messen des Punktes ist
   GetPoint( CATSafeArrayVariant  oCoordinates)

Code:

Sub CATMain()

Set documents1 = CATIA.Documents
Set partDocument1 = documents1.Add("Part")
Set part1 = partDocument1.Part
Set hybridBodies1 = part1.HybridBodies
Set hybridBody1 = hybridBodies1.Add()
Set hybridShapeFactory1 = part1.HybridShapeFactory

Set hybridShapePointCoord1 = hybridShapeFactory1.AddNewPointCoord(0.000000, 0.000000, 0.000000)
hybridBody1.AppendHybridShape hybridShapePointCoord1
part1.InWorkObject = hybridShapePointCoord1
part1.Update

Set reference2 = part1.CreateReferenceFromObject(hybridShapePointCoord1)
Set hybridShapeDirection1 = hybridShapeFactory1.AddNewDirectionByCoord(0.000000, 0.000000, 1.000000)
Set hybridShapeLinePtDir1 = hybridShapeFactory1.AddNewLinePtDir(reference2, hybridShapeDirection1,-200.000000, 200.000000, False)
hybridBody1.AppendHybridShape hybridShapeLinePtDir1
part1.InWorkObject = hybridShapeLinePtDir1
part1.Update

Set reference3 = part1.CreateReferenceFromObject(hybridShapePointCoord1)
Set hybridShapeSphere1 = hybridShapeFactory1.AddNewSphere(reference3, Nothing, 20.000000, -45.000000, 45.000000, 0.000000, 180.000000)
hybridShapeSphere1.Limitation = 1
hybridBody1.AppendHybridShape hybridShapeSphere1
part1.InWorkObject = hybridShapeSphere1
part1.Update

Set reference4 = part1.CreateReferenceFromObject(hybridShapeLinePtDir1)
Set reference5 = part1.CreateReferenceFromObject(hybridShapeSphere1)
Set hybridShapeIntersection1 = hybridShapeFactory1.AddNewIntersection(reference4, reference5)
hybridShapeIntersection1.PointType = 0
hybridBody1.AppendHybridShape hybridShapeIntersection1
part1.InWorkObject = hybridShapeIntersection1
part1.Update

'--- Ab hier anders
Set reference6 = part1.CreateReferenceFromObject(hybridShapeIntersection1)
Dim aCoordinates(2)

Set TheSPAWorkbench = CATIA.ActiveDocument.GetWorkbench("SPAWorkbench")

'--- Isolieren von Multi-Elementen (Mehrfach-Objekten)
'--- CATIA erzeugt ein Array (Größe = Anzahl der BReps - 1)
HShapeDatum = hybridShapeFactory1.AddNewDatums(reference6)
For t = 0 To UBound(HShapeDatum)
  '--- wenn du die nächste Zeile auskommentierst, werden die Isolierten Punkte nicht in den Tree aufgenommen. Die Messung funktioniert trotzdem
   hybridBody1.AppendHybridShape HShapeDatum(t)
   part1.Update
   Set reference7 = part1.CreateReferenceFromObject(HShapeDatum(t))
   Set TheMeasurable = TheSPAWorkbench.GetMeasurable(reference7)
   '--- Coordinaten von Punkten werden mit .GetPoint gemessen
   '--- aCoordinates ist ein Array (0=X,1=Y,2=Z)
   TheMeasurable.GetPoint aCoordinates
   MsgBox HShapeDatum(t).Name & " has the coordinates " & vbLf & "X: " & Round(aCoordinates(0), 3) & vbLf & "Y: " & Round(aCoordinates(1), 3) & vbLf & "Z: " & Round(aCoordinates(2), 3), 64, "Result of Measurable"
Next

End Sub

Hoffe das hilft dir weiter

Gruß & ein schönes Wochenende

------------------
tomtom1972

[Diese Nachricht wurde von tomtom1972 am 20. Apr. 2007 editiert.]

[Diese Nachricht wurde von tomtom1972 am 20. Apr. 2007 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP



Project Engineer Mechanical (m/w/d)

Die Motherson Group ist einer der 25 größten und am schnellsten wachsenden Anbieter von Komplett­system­lösungen für die globale Auto­mobil­industrie und bedient eine Viel­zahl weiterer Branchen wie Eisen­bahn, Luft- und Raum­fahrt, Medizin, IT und Logistik mit über 168.000 Mitar­beitern in 41 Ländern welt­weit. Samvardhana Motherson Reflectec (SMR) ist der Spezialist der Gruppe für Rück­sicht­systeme für die Auto­mobil­industrie....

Anzeige ansehenProjektmanagement
dc_tke
Mitglied



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

Beiträge: 23
Registriert: 07.07.2003

erstellt am: 23. Apr. 2007 12:04    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 tomtom1972

Die Methode AddNewDatums habe ich bisher übersehen. Echt guter Tipp von dir. Es funktioniert sogar für Datum Elemente und das, obwohl in der Doku gegenteiliges steht.

Vielen Dank nochmals.

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