Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Elemente aus Geometrischen Set in txt-File exportieren

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:  Elemente aus Geometrischen Set in txt-File exportieren (3898 mal gelesen)
dersummi
Mitglied



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

Beiträge: 43
Registriert: 03.11.2006

erstellt am: 03. Nov. 2006 16:17    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 Leute!

Ich bin dabei eine Schnittstelle zu programmieren. dazu ist es erstmal notwendig daten aus einem geometrischen set in eine txt-datei zu exportieren. Also, ich habe ein geometrisches set in dem punkte, linien, kreis, splines vorhanden sind. Nun möchte ich das ich das makro starte, er mich fragt welches geo-set ich exportieren möchte, ich dieses selektieren und dann soll er erkennen was für elemente darin sind. den elementtyp und die dazugehörigen koordinaten sollen dann in einem txt-file gespeichert werden! Kann mir jemand ein tip geben mit welchen mitteln ich das erstmal hinbekomme? wichtig wäre erstmal, das er erkennt was im set ist und den typ und die punkte speichert im txt-file. vereinfacht nehmen wir erstmal an das dort nur punkte, linien und evtl noch kreise vorhanden sind - splines, halbkreis, etc kommen später!

wäre um tipps dankbar
habe zwar schon etwas gefunden hier im forum, aber nur ein skript welches nur mit punkte funzt.

Grüsse Matthias

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

Proofin
Mitglied
Dpl.Ing


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

Beiträge: 208
Registriert: 24.11.2004

erstellt am: 03. Nov. 2006 16:26    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 dersummi 10 Unities + Antwort hilfreich

Hi Matthias,

stell doch bitte mal das Skript mit rein.
Dann kann man eher sehen was schon gemacht wird und was noch fehlt.

Gruß
Proofin

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

dersummi
Mitglied



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

Beiträge: 43
Registriert: 03.11.2006

erstellt am: 03. Nov. 2006 17:02    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

naja, bislang habe ich nur ein skript aus dem forum, welches ich versuche umzuwandeln. aber das funktioniert ja leider nur, wenn das set nur aus punkten besteht. das heißt ich brauche vorab eine abfrage, um welchen elemnttyp es sich handelt, wenn es ein punkt ist, soll das makro dann z.b, Punk und dann die koordinaten dahinter in die txt datei schreiben , bei iener line dann z.b. Linie start und endpunkt, bei einem kreis zb kreis mittelpunkt radius oder sowas in der art!

das makro welches ich abwandeln wollte ist dieses hier:

_____________

Sub CATMain()

    ' Was soll selektierbar sein
    Dim EnableSelectionFor(0)
    EnableSelectionFor(0) = "HybridBody"

    ' Selektion definieren und leeren --------------------------------------------------
    Set sSEL = CATIA.ActiveDocument.Selection
    sSEL.Clear
    UserSelection = sSEL.SelectElement(EnableSelectionFor, "Bitte das Geometrische Set auswählen, welches exportiert werden soll", False)
 
    ' Auswertung ob Selektion erfolgreich -----------------------------------------------
    If UserSelection <> "Normal" Then
        MsgBox "Fehler bei der Auswahl"
        Exit Sub
Else
Set ohybridbody = sSEL.Item(1).Value
    End If
 
ReDim acoord(2)
Set Datei = CATIA.FileSystem.CreateFile("C:\Dokumente und Einstellungen\All Users\Desktop\export.txt", True)

Set ostream = Datei.OpenAsTextStream("ForAppending")

Set oshapes = ohybridbody.HybridShapes
For i = 1 To oshapes.Count
oshapes.Item(i).GetCoordinates acoord
ostream.Write (acoord(0) & ";" & acoord(1) & ";" & acoord(2) & Chr(10))

Next
ostream.Close
End Sub

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

Proofin
Mitglied
Dpl.Ing


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

Beiträge: 208
Registriert: 24.11.2004

erstellt am: 06. Nov. 2006 09:17    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 dersummi 10 Unities + Antwort hilfreich

Hi Matthias,

ich hab dein Skript mal erweitert für das Auslesen von Punkten, Linien und Kreisen.


Const sPOINT = "HybridShapePoint"
Const sLINE = "HybridShapeLine"
Const sCIRCLE = "HybridShapeCircle"
Const sFILEPATH = "C:\Dokumente und Einstellungen\All Users\Desktop\export.txt"

Sub CATMain()

  ' Was soll selektierbar sein
  Dim sSel
  Dim UserSelection
  Dim EnableSelectionFor(0)
  Dim oHybridbody
  Dim aCoord(2)
  Dim aPoints(8)
  Dim oStream
  Dim oShapes
  Dim ii
  Dim oSpaWB 'As SPAWorkbench
  Dim oMeas 'As Measurable
  Dim oDatei
  Dim sType
 
 
  EnableSelectionFor(0) = "HybridBody"

  ' Selektion definieren und leeren --------------------------------------------------
  Set sSel = CATIA.ActiveDocument.Selection
  sSel.Clear
  Call MsgBox("Bitte GeoSet selektieren", vbOKOnly)
  UserSelection = sSel.SelectElement2(EnableSelectionFor, "Bitte das Geometrische Set auswählen, welches exportiert werden soll", False)

  ' Auswertung ob Selektion erfolgreich -----------------------------------------------
  If UserSelection <> "Normal" Then
      MsgBox "Fehler bei der Auswahl"
      Exit Sub
  Else
    Set oHybridbody = sSel.Item(1).Value
    sSel.Clear
  End If
 
  'Kontrolle, ob Datei schon vorhanden ist
  ' wenn ja dann Daten anhängen
  If CATIA.FileSystem.FileExists(sFILEPATH) Then
    Set oDatei = CATIA.FileSystem.GetFile(sFILEPATH)
  ' sonst Datei erstellen
  Else
    Set oDatei = CATIA.FileSystem.CreateFile(sFILEPATH, True)
  End If
  ' zum Schreiben(Anhängen wenn schon vorhanden) öffnen
  Set oStream = oDatei.OpenAsTextStream("ForAppending")
 
  ' Liste der GeoElemente des GeoSets speichern
  Set oShapes = oHybridbody.HybridShapes
  ' Workbench zum Messen holen
  Set oSpaWB = CATIA.ActiveDocument.GetWorkbench("SPAWorkbench")
 
  ' Fehlerbehandlung abschalten
  On Error Resume Next
  ' alle Elemente im GeoSet durchlaufen
  For ii = 1 To oShapes.Count
    ' Type des GeoElement abfragen
    sType = TypeName(oShapes.Item(ii))
    ' GeoElement in MessObjekt umwandeln
    Set oMeas = oSpaWB.GetMeasurable(oShapes.Item(ii))
   
    'Type Kontrollieren
    ' Wenn Punkt
    If (InStr(1, sType, sPOINT) <> 0) Then
   
      Call oMeas.GetPoint(aCoord)
      Call oStream.Write("Punkt: (" & aCoord(0) & ";" & aCoord(1) & ";" & aCoord(2) & ")" & vbCrLf)
   
    ' wenn Linie
    ElseIf InStr(1, sType, sLINE) <> 0 Then
     
      ' PointsOnCurve liefert die Start-, Mittel- und Endpunktkoordinaten zurück
      Call oMeas.GetPointsOnCurve(aPoints)
      Call oStream.Write("Line: Anfang(" & aPoints(0) & ";" & aPoints(1) & ";" & aPoints(2) & _
                                ") Ende(" & aPoints(6) & ";" & aPoints(7) & ";" & aPoints(8) & ")" & vbCrLf)
   
    ' wenn Kreis
    ElseIf InStr(1, sType, sCIRCLE) <> 0 Then
   
      Call oMeas.GetCenter(aCoord)
      Call oStream.Write("Kreis: Mittelpunkt(" & aCoord(0) & ";" & aCoord(1) & ";" & aCoord(2) & _
                                ") Radius(" & oMeas.radius & ")" & vbCrLf)
     
    End If
 
  Next
  ' Fehlerbehandlung wieder einschalten
  On Error GoTo 0
 
  ' Datei schliessen
  oStream.Close
 
  MsgBox ("Fertig!")
End Sub

wenn es noch fragen gibt sag einfach bescheid

Gruß
Proofin

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

dersummi
Mitglied



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

Beiträge: 43
Registriert: 03.11.2006

erstellt am: 06. Nov. 2006 12: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

Super dank, funktioniert prima - Werd damit jetzt erstmal weiterarbeiten und mich bei problemen melden! danke für die schnelle hilfe, echt klasse

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

dersummi
Mitglied



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

Beiträge: 43
Registriert: 03.11.2006

erstellt am: 06. Nov. 2006 12:32    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

gleich noch eine frage: ist es möglich ein koordinate die z.B. bei 10,3467 liegt so darzustellen : 1.034670000000e+01 , also erstmal das komma durch ounkt ersetzten und dann eine exponetielle schreibweise mit 12nachkommerstellen? ist wichtig für die schnittstelle!

[Diese Nachricht wurde von dersummi am 06. Nov. 2006 editiert.]

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

Proofin
Mitglied
Dpl.Ing


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

Beiträge: 208
Registriert: 24.11.2004

erstellt am: 06. Nov. 2006 13:19    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 dersummi 10 Unities + Antwort hilfreich


Das Komma kannst du wie folgt ersetzen:

  Replace(aCoord(0),",",".")

Der komplette Aufruf für die Ausgabe beim Punkt sieht dann wie folgt aus:

  Call oStream.Write("Punkt: (" &replace(aCoord(0),",",".") & ";" & replace(aCoord(1),",",".") & ";" & replace(aCoord(2),",",".") & ")" & vbCrLf)

mit der exp. Schreibweise weiß ich jetzt auf anhieb nicht ob es da vielleicht eine Format Funktion gibt.

Gruß

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

Proofin
Mitglied
Dpl.Ing


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

Beiträge: 208
Registriert: 24.11.2004

erstellt am: 06. Nov. 2006 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 dersummi 10 Unities + Antwort hilfreich

Ich hab noch eine Lösung für die Nachkommastellen,
hier mal das geänderte Skript:

Const sPOINT = "HybridShapePoint"
Const sLINE = "HybridShapeLine"
Const sCIRCLE = "HybridShapeCircle"
Const sFILEPATH = "C:\Dokumente und Einstellungen\All Users\Desktop\export.txt"

Sub CATMain()

  ' Was soll selektierbar sein
  Dim sSel
  Dim UserSelection
  Dim EnableSelectionFor(0)
  Dim oHybridbody
  Dim aCoord(2)
  Dim aPoints(8)
  Dim oStream
  Dim oShapes
  Dim ii
  Dim oSpaWB 'As SPAWorkbench
  Dim oMeas 'As Measurable
  Dim oDatei
  Dim sType
 
 
  EnableSelectionFor(0) = "HybridBody"

  ' Selektion definieren und leeren --------------------------------------------------
  Set sSel = CATIA.ActiveDocument.Selection
  sSel.Clear
  Call MsgBox("Bitte GeoSet selektieren", vbOKOnly)
  UserSelection = sSel.SelectElement2(EnableSelectionFor, "Bitte das Geometrische Set auswählen, welches exportiert werden soll", False)

  ' Auswertung ob Selektion erfolgreich -----------------------------------------------
  If UserSelection <> "Normal" Then
      MsgBox "Fehler bei der Auswahl"
      Exit Sub
  Else
    Set oHybridbody = sSel.Item(1).Value
    sSel.Clear
  End If
 
  'Kontrolle, ob Datei schon vorhanden ist
  ' wenn ja dann Daten anhängen
  If CATIA.FileSystem.FileExists(sFILEPATH) Then
    Set oDatei = CATIA.FileSystem.GetFile(sFILEPATH)
  ' sonst Datei erstellen
  Else
    Set oDatei = CATIA.FileSystem.CreateFile(sFILEPATH, True)
  End If
  ' zum Schreiben(Anhängen wenn schon vorhanden) öffnen
  Set oStream = oDatei.OpenAsTextStream("ForAppending")
 
  ' Liste der GeoElemente des GeoSets speichern
  Set oShapes = oHybridbody.HybridShapes
  ' Workbench zum Messen holen
  Set oSpaWB = CATIA.ActiveDocument.GetWorkbench("SPAWorkbench")
 
  ' Fehlerbehandlung abschalten
  On Error Resume Next
  ' alle Elemente im GeoSet durchlaufen
  For ii = 1 To oShapes.Count
    ' Type des GeoElement abfragen
    sType = TypeName(oShapes.Item(ii))
    ' GeoElement in MessObjekt umwandeln
    Set oMeas = oSpaWB.GetMeasurable(oShapes.Item(ii))
   
    'Type Kontrollieren
    ' Wenn Punkt
    If (InStr(1, sType, sPOINT) <> 0) Then
   
      Call oMeas.GetPoint(aCoord)
      ' MyFomart siehe unten
      Call oStream.Write("Punkt: (" & MyFormat(aCoord(0)) & ";" & MyFormat(aCoord(1)) & ";" & MyFormat(aCoord(2)) & ")" & vbCrLf)

    ' wenn Linie
    ElseIf InStr(1, sType, sLINE) <> 0 Then
     
      ' PointsOnCurve liefert die Start-, Mittel- und Endpunktkoordinaten zurück
      Call oMeas.GetPointsOnCurve(aPoints)
      Call oStream.Write("Line: Anfang(" & aPoints(0) & ";" & aPoints(1) & ";" & aPoints(2) & _
                                ") Ende(" & aPoints(6) & ";" & aPoints(7) & ";" & aPoints(8) & ")" & vbCrLf)
   
    ' wenn Kreis
    ElseIf InStr(1, sType, sCIRCLE) <> 0 Then
   
      Call oMeas.GetCenter(aCoord)
      Call oStream.Write("Kreis: Mittelpunkt(" & aCoord(0) & ";" & aCoord(1) & ";" & aCoord(2) & _
                                ") Radius(" & oMeas.Radius & ")" & vbCrLf)
     
    End If
 
  Next
  ' Fehlerbehandlung wieder einschalten
  On Error GoTo 0
 
  ' Datei schliessen
  oStream.Close
 
  MsgBox ("Fertig!")
End Sub

Private Function MyFormat(Value)
  Dim str
  ' Zahlenwert mit 12 Nachkommastellen formatieren
  str = FormatNumber(Value, 12)
  ' Komma durch Punkt ersetzen und Zahl zurückgeben
  MyFormat = Replace(str, ",", ".")
End Function

um den exp. Schreibweise zu erhalten kommst du ums selber rechnen wohl nicht drum herum.

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

dersummi
Mitglied



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

Beiträge: 43
Registriert: 03.11.2006

erstellt am: 08. Nov. 2006 14:10    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

dank dir! konnte die funktion ergänzen und nun exportiert er die koordinaten tatsächlich in exponetieller schreibweise mit 12 nachkommerstellen    

hoffe ich hab auch alles berücksichtigt.

bei weiteren fragen werde ich hier posten ;-) dank dir/euch
grüsse matthias

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

dersummi
Mitglied



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

Beiträge: 43
Registriert: 03.11.2006

erstellt am: 08. Nov. 2006 16:20    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

Schon ist es wieder soweit :-(

Wie bekomme ich es hin das das makro einen Vollkreis und einen Kreisbogen unterscheiden kann?

Habe die Funktion "GetLimitation" gefunden die dann z.B. 0 oder 1 ausgeben soll, aber ich bekomme es nicht hin das er dann endweder 0 oder 1 in einer Variablen speichert, so dass ich dann für den kreis oder den halbkreis unterschiedlich exportieren kann!

grüsse matthias

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

Proofin
Mitglied
Dpl.Ing


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

Beiträge: 208
Registriert: 24.11.2004

erstellt am: 08. Nov. 2006 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 dersummi 10 Unities + Antwort hilfreich

Hi Matthias,

ohne es getestet zu haben: probier mal die Property Angle vom oMeas Objekt.

...
' wenn Kreis
    ElseIf InStr(1, sType, sCIRCLE) <> 0 Then
 
      Call oMeas.GetCenter(aCoord)

      dAngle = oMeas.Angle
      if dAngle < 360 then
          'tut etwas
      else
          Call oStream.Write("Kreis: Mittelpunkt(" & aCoord(0) & ";" & aCoord(1) & ";" & aCoord(2) & _
                                ") Radius(" & oMeas.radius & ")" & vbCrLf)
      end if
...

Gruß
Proofin

[Diese Nachricht wurde von Proofin am 08. Nov. 2006 editiert.]

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

dersummi
Mitglied



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

Beiträge: 43
Registriert: 03.11.2006

erstellt am: 08. Nov. 2006 18:26    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 funktioniert:-) hab ich wohl etwas zu kompliziert gedacht - naja, muß wohl noch viel lernen ;-)

danke

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

Proofin
Mitglied
Dpl.Ing


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

Beiträge: 208
Registriert: 24.11.2004

erstellt am: 09. Nov. 2006 09: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 dersummi 10 Unities + Antwort hilfreich

Moin,

kein Problem wir haben alle mal klein angefangen 

Gruß Proofin

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

dersummi
Mitglied



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

Beiträge: 43
Registriert: 03.11.2006

erstellt am: 11. Nov. 2006 16: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

so, mit dem makro bin ich nun recht weit alleine gekommen - aber nun kommt wieder ein kleines problem, das aber hoffetnlich einfach zu lösen ist! Einer von den Sonderfällen ist, das im GeoSet Elemente we Kreise und Linien nicht direkt sonder in einer Skizze liegen! Gibt es deine Möglichkeit auch diese Elemente auszulesen und die entsprechenden Punkte und Daten auszugeben, wie es auch mit den 3d-Objekten möglich ist?

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

Proofin
Mitglied
Dpl.Ing


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

Beiträge: 208
Registriert: 24.11.2004

erstellt am: 15. Nov. 2006 09:16    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 dersummi 10 Unities + Antwort hilfreich

Moin Matthias,

vielleicht hab ich heute etwas Zeit mir das mal anzuschauen.
Aber im Prinzip funktioniert es ähnlich wie bei den Shapes, nur das du jetzt die HybridSketches abfragen mußt.

--------------------------------------------
Code
--------------------------------------------

...
Dim oSketches
Dim oSketch
Dim yy

...

  ' Liste der GeoElemente des GeoSets speichern
  Set oShapes = oHybridbody.HybridShapes

  Set oSketches = oHybridbody.HybridSketches

...

' nach der Schleife für die Shapes

For ii=1 to oSketches.Count
  Set oSketch = oSketches.Item(ii)
  For yy=1 to oSketch.GeometricElements.Count
    ' hier ähnlichen If Else Konstrukt wie in den Shapes
    ' die Typen sollten Line2D und Circle2D sein oder was du auslesen willst
  next

next

...

--------------------------------------------------
Code Ende
--------------------------------------------------

Ich hab das nicht getestet. Aber vielleicht hilft es dir ja schon weiter.

Gruß
Proofin

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

dersummi
Mitglied



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

Beiträge: 43
Registriert: 03.11.2006

erstellt am: 15. Nov. 2006 13:11    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

Danke Schon mal!

Also ich bekomme es soweit hin das er die Elemente in der Skizze Abfragt und prüft ob es z.B. ein kreis ist! nun dachte ich, ich könnte mit den "alten" codes mir die benötigten Daten daraus exportieren lassen, also damit hier:

Dim oSketches
Dim oSketch
Dim yy
Dim xx

' Liste der GeoElemente des GeoSets speichern

  Set oSketches = oHybridbody.HybridSketches

For xx=1 to oSketches.Count

  Set oSketch = oSketches.Item(xx)
  For yy=1 to oSketch.GeometricElements.Count

set osketchelement = oSketch.GeometricElements.Item(yy)

    ' Element in MessObjekt umwandeln
    Set oMeas = oSpaWB.GetMeasurable(osketchelement)

' Type des GeoElement abfragen
    sType = TypeName(osketchelement)


' wenn Kreis
If InStr(1, sType, sCIRCLE2D) <> 0 Then    'Bis hier läufts, nun muß ich aber Eigenschaften wie den Mittelpunkt abfragen
 
Call  oMeas.GetCenter(aCoord)    'oder z.B über oMeas.radius den radius rausholen

End If

  next

next

------------------------------

Liegt es daran das ich bei der deklaration von oMeas und sowas fehler gemacht habe, oder gibt es andere Befehle für die Elemente in Skizze? Also ich brauche bei dem Kreis, den Mittelpunkt, Radius, Winkel und dann nachher noch von der Skizze die Orientierung!

[Diese Nachricht wurde von dersummi am 15. Nov. 2006 editiert.]

[Diese Nachricht wurde von dersummi am 15. Nov. 2006 editiert.]

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

Proofin
Mitglied
Dpl.Ing


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

Beiträge: 208
Registriert: 24.11.2004

erstellt am: 15. Nov. 2006 19:24    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 dersummi 10 Unities + Antwort hilfreich

Nein mit dem oMeas kommst du bei 2D nicht weiter!!
Funktioniert nur mit 3D.

Du kannst aber die Sachen direkt abfragen:

'Type des GeoElement abfragen
sType = TypeName(osketchelement)


' wenn Kreis
If InStr(1, sType, sCIRCLE2D) <> 0 Then    'Bis hier läufts, nun muß ich aber Eigenschaften wie den Mittelpunkt abfragen
  dim a2DCoord(2)
  osketchelement.Radius
  osketchelement.GetCenter(a2DCoord)
end if

Für die Linie kannst du GetEndPoints(aCoords) verwenden mit aCoords(3)
aCoords(0) -> x erster Punkt
aCoords(1) -> y erster Punkt
aCoords(2) -> x zweiter Punkt
aCoords(3) -> y zweiter Punkt

Hab es aber nicht weiter getestet, hab leiderr keine Zeit gehabt

Zusatz:
kennst du eigendlich die V5Automation.chm? Die liegt in dem Installationsverzeichnis von Catia.

Gruß
Proofin

[Diese Nachricht wurde von Proofin am 15. Nov. 2006 editiert.]

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

dersummi
Mitglied



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

Beiträge: 43
Registriert: 03.11.2006

erstellt am: 15. Nov. 2006 23:23    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

V5Automation.chm hab ich schon und nutze ich auch (mehr oder weniger) Leider komme ich damit noch nicht so klar das ich die Befehle auch funktionsfähig umsetzen kann! GetCenter hab ich z.B. auch gefunden, aber irgendwie nicht zum laufen bekommen, obwohl es doch ganz einfach erscheint!

Genau so muß ich nun noch den Winkel des Kreises rausbekommen und weiß wieder nicht weiter!

Sind immer so kleinigkeiten die ganz einfach sind und ich einfach nicht aus dem V5Automation umsetzen kann! Aber ich bemühe mich, hin und wieder klappt es jo und so bekomme ich z.b. auch die Ausrichtung der Skizze ausgelesen und exportiert - geht halt immer weiter aber manchmal sieht man den wald vor lauter bäumen nicht oder mir fehlt schlichtweg die erfahrung im umgang mit V5Automation 

Versuche auch verzweifelt die Ausrichtung eines Achsensystems, welches im Geoset liegt auszulesen

[Diese Nachricht wurde von dersummi am 15. Nov. 2006 editiert.]

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

Proofin
Mitglied
Dpl.Ing


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

Beiträge: 208
Registriert: 24.11.2004

erstellt am: 16. Nov. 2006 09:22    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 dersummi 10 Unities + Antwort hilfreich

Moin Matthias,

ich hab mal gerade die Ausgabe für die 2D Linien und Kreise ausprobiert.

-----------------------------------
Code
-----------------------------------

...

  Dim oLine2D
  Dim oCircle2D
  Dim aPoints2D(3)
  Dim aPoint2D(1)

...

      sType = TypeName(oGeoElements.Item(yy))
     
      'Type Kontrollieren
      ' wenn Linie
      If InStr(1, sType, sLine2D) <> 0 Then
       
        ' GetEndPoints liefert die Start- und Endpunktkoordinaten zurück
        Set oLine2D = oGeoElements.Item(yy)
        Call oLine2D.GetEndPoints(aPoints2D)
        Call oStream.Write("Line2D: Anfang(" & aPoints2D(0) & ";" & aPoints2D(1) & _
                                  ") Ende(" & aPoints2D(2) & ";" & aPoints2D(3) & ")" & vbCrLf)
     
      ' wenn Kreis
      ElseIf InStr(1, sType, sCircle2D) <> 0 Then
        Set oCircle2D = oGeoElements.Item(yy)
        Call oCircle2D.GetCenter(aPoint2D)
        Call oStream.Write("Kreis2D: Mittelpunkt(" & aPoint2D(0) & ";" & aPoint2D(1) & _
                                  ") Radius(" & oCircle2D.Radius & ")" & vbCrLf)

...

----------------------------------
Code Ende
----------------------------------

Mußt natürlich noch die Ausgabe formatieren.
Mit den Achsensystemen im Geoset ist es nicht so einfach.

Gruß
Proofin

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

Proofin
Mitglied
Dpl.Ing


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

Beiträge: 208
Registriert: 24.11.2004

erstellt am: 16. Nov. 2006 09: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 Nur für dersummi 10 Unities + Antwort hilfreich

Noch ne Frage zu den Achsensystemen:

was möchtetst du genau auslesen und wie viel sind vorhanden??

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

dersummi
Mitglied



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

Beiträge: 43
Registriert: 03.11.2006

erstellt am: 16. Nov. 2006 10:48    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 es werden mehrere axensysteme in dem geoset vorkommen und ich brauche die ausrichtung der achsen!

bei den kreisen bin ich auch schon so weit gekommen *stolz* kennst du einen befehlt um den winkel bei kreisen in skizzen auszulesen?

Danke für die viele Hilfe

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

Proofin
Mitglied
Dpl.Ing


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

Beiträge: 208
Registriert: 24.11.2004

erstellt am: 16. Nov. 2006 13:16    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 dersummi 10 Unities + Antwort hilfreich


so wie ich das sehe gibt es keinen Befehl dafür. Ich würde es pauschal mal über die Vektormathematik versuchen.
Du hast 2 Vektoren Mitte->End und Mitte->Start dann den Winkel zwischen den beiden berechnen.

Mit den Achsensystemen hab ich vielleicht eine Idee, das kann ich aber erst am Wochenende ausprobieren.

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

Proofin
Mitglied
Dpl.Ing


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

Beiträge: 208
Registriert: 24.11.2004

erstellt am: 20. Nov. 2006 09:36    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 dersummi 10 Unities + Antwort hilfreich

Moin Matthias,

deine Achsensysteme kannst du folgender Maßen auslesen:

--------------------------------------------------
Code
--------------------------------------------------

...
  '-------------------------------------------------------------------------
  ' Achsensysteme auslesen
  '-------------------------------------------------------------------------
  ' selektion leeren
  sSel.Clear
  ' Geoset zur Selektion hinzufügen
  sSel.Add (oHybridbody)
  ' in dieser selektion die achsessysteme selektieren
  Call sSel.Search("Typ=Achsensystem,sel")
 
  ' alle gefundenen systeme auslesen
  For ii = 1 To sSel.Count
    ' system speichern
    Set oAxisSys = sSel.Item(ii).Value
    ' Ursprung
    Call oAxisSys.GetOrigin(aCoord)
    Call oStream.Write("KO-Sys: Ursprung(" & aCoord(0) & ";" & aCoord(1) & ";" & aCoord(2) & ")" & vbCrLf)
    ' X Achse
    Call oAxisSys.GetXAxis(aCoord)
    Call oStream.Write("KO-Sys: X-Dir(" & aCoord(0) & ";" & aCoord(1) & ";" & aCoord(2) & ")" & vbCrLf)
    ' Y Achse
    Call oAxisSys.GetYAxis(aCoord)
    Call oStream.Write("KO-Sys: Y-Dir(" & aCoord(0) & ";" & aCoord(1) & ";" & aCoord(2) & ")" & vbCrLf)
    ' Z Achse
    Call oAxisSys.GetZAxis(aCoord)
    Call oStream.Write("KO-Sys: Z-Dir(" & aCoord(0) & ";" & aCoord(1) & ";" & aCoord(2) & ")" & vbCrLf)
   
  Next
 
  Call sSel.Clear

...

----------------------------------------------------
Code Ende
----------------------------------------------------

Das ist zwar nicht sehr schön, da nur für das deutsche V5, aber vielleicht hilft es dir weiter.

Gruß
Proofin

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

dersummi
Mitglied



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

Beiträge: 43
Registriert: 03.11.2006

erstellt am: 21. Nov. 2006 20:24    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

hatte bislang keine zeit das auszuprobieren-werd ich hoffentlich morgen zu kommen!
Danke schon mal, werd das mal testen!
warum funzt es denn nur für das deutsche V5?
Was müsste denn für das englische anders sein? liegt es an der bezeichnung der achsensysteme?

grüsse matthias

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

Proofin
Mitglied
Dpl.Ing


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

Beiträge: 208
Registriert: 24.11.2004

erstellt am: 22. Nov. 2006 11:11    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 dersummi 10 Unities + Antwort hilfreich

Moin Matthias,

das liegt an dem Suchstring:

  ' in dieser selektion die achsessysteme selektieren
  Call sSel.Search("Typ=Achsensystem,sel")

Diesen String muß du in der englischen Version anpassen, ich hab es nicht im englischen getestet.

müßte dann sowas sein wie:
  ' in dieser selektion die achsessysteme selektieren
  Call sSel.Search("Type=Axis System,sel")
aber wie gesagt hab ich nicht getestet. Das kannst du aber auch in Catia ausprobieren, wenn in das Menü "Bearbeiten/Suchen..." gehst. Da siehst du die Suchstrings.

Gruß
Proofin

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

dersummi
Mitglied



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

Beiträge: 43
Registriert: 03.11.2006

erstellt am: 24. Nov. 2006 14:32    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 erstmal danke für die Arbeit!

Im deutschen funzt es ausgezeichnet mit den Achsensystemen!

Nun habe ich versucht es auch im Englischen hin zu bekommen! Laut Suchstring sollte der Typ , wie von dir angegeben, "Axis System" sein! Also habe ich es so versucht wie von dir vermutet! Leider ohne Erfolg! woran kann es noch liegen? hast du eine Idee? Muß es noch hinbekommen das es auch im Englischen funktioniert!

Alternativ kann ich das Problem vll auch Methodisch lösen, in dem ich Vorgebe das die Systeme immer AxisSystem.1 , AxisSystem.2 , ....... , heißen müssen und dann anhand des Namen die selektion durchführen zu lassen!

Noch was zu dem auslesen aus Skizzen , ich habe jetzt einiges in Automation gefunden mit dem ich arbeiten kann, nur stehe ich vor dem Problem das ich bei Punkten ja immer den Punkt in der Skizze bekomme und nicht die Koordinaten des Punktes im Raum, also die absoluten Koordinaten! Ich denke das man das auch durch Vektorrechnung evtl errechnen kann, weiß aber noch nciht wie - Aber Catia hat doch bestimmt vll ja auch eine lösung parat wie ich das umrechnen lassen kann.

grüsse Matthias

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

Proofin
Mitglied
Dpl.Ing


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

Beiträge: 208
Registriert: 24.11.2004

erstellt am: 24. Nov. 2006 18:42    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 dersummi 10 Unities + Antwort hilfreich

Hi Matthias,

ich habe gerade den Suchstring mal im englischen ausprobiert, also bei mir funktioniert es. Mein Aufruf lautet:
  sSel.Add (oHybridbody)
  sSel.Search ("Type=Axis System,sel")

Was die 2D Punkte angeht kannst du folgendes in die Abfrage der
Skizzen einbauen:

-------------------------------------------------
Code
-------------------------------------------------
      ' wenn Kreis
      ElseIf InStr(1, sType, sCircle2D) <> 0 Then
        Set oRef = CATIA.ActiveDocument.Part.CreateReferenceFromObject(oGeoElements.Item(yy))
        Set oMeas = oSpaWB.GetMeasurable(oRef)
        Call oMeas.GetCenter(aCoord)
        Call oStream.Write("Kreis: Mittelpunkt(" & aCoord(0) & ";" & aCoord(1) & ";" & aCoord(2) & _
                                  ") Radius(" & oMeas.Radius & ")" & vbCrLf)
      ElseIf InStr(1, sType, sPoint2D) <> 0 Then
        Set oRef = CATIA.ActiveDocument.Part.CreateReferenceFromObject(oGeoElements.Item(yy))
        Set oMeas = oSpaWB.GetMeasurable(oRef)
       
        Call oMeas.GetPoint(aCoord)
        Call oStream.Write("Punkt2D: (" & MyFormat(aCoord(0)) & ";" & MyFormat(aCoord(1)) & ";" & MyFormat(aCoord(2)) & ")" & vbCrLf)

      End If
-------------------------------------------------
Code Ende
-------------------------------------------------

wie du sicher bemerkt hast kann man die 2D Objekte doch über das oMeas Objekt abfragen, tut mir leid hab ich auch jetzt erst bemerkt.

Allerdings mußt du aufpassen den die Koordinaten des Mittelpunkt erhälts du zweimal einmal bei der Abfrage des Kreises und einmal bei
der Abfrage der Punkte. Denn Catia legt im Sketch auch noch einen extra Punkt für den Mittelpunkt des Kreises an.

Schönes Wochenende
Proofin

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

Lusilnie
Mitglied



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

Beiträge: 1486
Registriert: 13.07.2005

erstellt am: 24. Nov. 2006 21:26    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 dersummi 10 Unities + Antwort hilfreich

Hallo dersummi,

versuch es doch mal mit:

Code:
sSel.Search ("'Type=Axis System',sel")

Vielleicht funktioniert es ja! Der Grund ist dann, das im Englischen in "Axis System" ein Leerzeichen steht, und da hat CATIA oft ein Problem.


mfg,
Lusilnie

------------------

Alle Aussagen zu DassaultSystemes-Produkten sind sehr optimistisch, selbst diese!!!

frei nach größeren Geistern

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

dersummi
Mitglied



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

Beiträge: 43
Registriert: 03.11.2006

erstellt am: 27. Nov. 2006 14: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

Dank für die Antworten!

Also das mit den Achsensystemen hab ich nun auch endlich hinbekommen, zusätzlich wird in einer Function die Sprache geprüft so dass je nach dem der englische oder deutsche suchstring verwednet wird!

Das ich über measurable auch in skizze arbeiten kann hatte ich mir auch schon irgendwie gedacht und auch schon rumprobiert, allerdings bislang ohne erfolg! nun funzt es aber, hab halt anscheinend immer probleme die richtigen referenzen anzugeben-aber nun geht es ja, manchmal schreibe ich genau das gleich dort hin und es geht nicht, wenn ich dann dein code nehme klappts, sind wohl immer irgendwie kleine fehler drin:-(

ein weiteres problem hab ich nun auch wieder, und ich weiß wieder nciht was ich falsch mache!

also, ich brauche von einem halbkreis zum beispiel den vektor (normiert) von mittelpunkt zu startpunkt und dann senkrecht zu diesem vektor in der ebene des kreises einen weiteren -> Ziel ist also ein neues koorinaten system zu erstellen wobei die X-Achse zum startpunkt des kreises zeigt.
soweit so gut! ich habe also , vll etwas umständlich, aber das ist nun mal egal (Himmerhin komme ich so auch zum Ziel). der code funzt einwandfrei im 3D, nun wollte ich das einfach in den Teil nochmals kopieren in dem Kreise aus Skizzen ausgelesen werden, und dort funzt es nicht. Hier mal der Code:
...
Dim startPoint
  Dim mPoint
Dim halfPoint
Dim LineX , RefLineX
Dim LineY , RefLineY
Dim XDir(2),yDir(2)
Dim RefP1, RefP2, RefP0, RefPlane
Dim oPart
Set oPart = CATIA.ActiveDocument.Part
Dim Wzk3D as Factory
Set Wzk3D = oPart.HybridShapeFactory
Dim oPlane

...

  For yy=1 to oSketch.GeometricElements.Count

set osketchelement = oSketch.GeometricElements.Item(yy)

  ' Type des GeoElement abfragen
    sType = TypeName(osketchelement)

    Set oRef =CATIA.ActiveDocument.Part.CreateReferenceFromObject(osketchelement)
  Set oMeas = oSpaWB.GetMeasurable(oRef)

...

' wenn Kreis
    ElseIf InStr(1, sType, sCIRCLE2D) <> 0 Then

'------------------------------------------------------------------Ausrichtung
Call oMeas.GetCenter(aCoord)
Call oMeas.GetPointsOnCurve(aPoints)

    ' X-Direction

Set mPoint = Wzk3D.AddNewPointCoord (aCoord(0),aCoord(1),aCoord(2)) 'Alle Punkte und deren Refernece erstellen
Set startPoint = Wzk3D.AddNewPointCoord (aPoints(0),aPoints(1),aPoints(2))
Set halfPoint = Wzk3D.AddNewPointCoord (aPoints(3),aPoints(4),aPoints(5))
Set RefP0 = oPart.CreateReferenceFromObject (mPoint)
Set RefP1 = oPart.CreateReferenceFromObject (startPoint)
Set RefP2 = oPart.CreateReferenceFromObject (halfPoint)

'oHybridBody.AppendHybridShape mPoint
'oHybridBody.AppendHybridShape startPoint

    Set LineX = Wzk3D.AddNewLinePtPt(RefP0, RefP1) 'Line für X-Direction
oHybridBody.AppendHybridShape LineX
Set RefLineX = oPart.CreateReferenceFromObject (LineX)

Set oPlane = Wzk3D.AddNewPlane3Points (RefP0, RefP1 , RefP2) 'Ebene als Stützelement erstellen
oHybridBody.AppendHybridShape oPlane
Set RefPlane = oPart.CreateReferenceFromObject (oPlane)

Set LineY = Wzk3D.AddNewLineAngle(RefLineX, RefPlane, RefP0, true , 0 , 1, 90, false ) 'Line für Y-Direction
oHybridBody.AppendHybridShape LineY
Set RefLineY = oPart.CreateReferenceFromObject (LineY)

opart.update

' X-Richtung speichern
Set oMeasLine = oSpaWB.GetMeasurable(RefLineX)
    Call oMeasLine.GetDirection(xDir)

' Y-Richtung
Set oMeasLine = oSpaWB.GetMeasurable(RefLineY)
    Call oMeasLine.GetDirection(yDir)

' Elemente löschen
Call Wzk3D.DeleteObjectForDatum(mPoint)
Call Wzk3D.DeleteObjectForDatum(startPoint)
Call Wzk3D.DeleteObjectForDatum(halfPoint)
'Call Wzk3D.DeleteObjectForDatum(oPlane)
'Call Wzk3D.DeleteObjectForDatum(LineY)
'Call Wzk3D.DeleteObjectForDatum(LineX)

xDir = norm(xdir) 'Normieren
yDir = norm(yDir)

opart.update

....

ich versteh einfach noch nicht warum das nciht geht! die Koordinaten der Punkte werden in aCoord und aPoints gespeicher, das habe ich geprüft, nun dachte ich das der Rest also auch hier funktionieren sollte, weil es im 3D ja auch geht! Ich denke mal das ich wieder ein Problem bei dei der Reference habe, oder habe ich einen solchen Denkfehler gerade????

[Diese Nachricht wurde von dersummi am 27. Nov. 2006 editiert.]

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

Proofin
Mitglied
Dpl.Ing


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

Beiträge: 208
Registriert: 24.11.2004

erstellt am: 27. Nov. 2006 17:06    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 dersummi 10 Unities + Antwort hilfreich

Moin,

ich verstehen dein Problem im Moment nicht!

Ich habe deinen Code bei mir ausprobiert und ich erhalte dir Richtungen der Linien.

Was funktioniert bei dir nicht oder nicht richtig??

Gruß
Proofin

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

dersummi
Mitglied



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

Beiträge: 43
Registriert: 03.11.2006

erstellt am: 27. Nov. 2006 22:48    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

Er erstellt die linien und die ebene bei mir nicht richtig! kommentiere mal das löschen der elemente aus dem code aus, bei mir werden die elemente dann nur mit fehler erstelle!

Bei dir etwa nicht?

Oder ist das zum Auslesen der Direction erstmal egal?

[Diese Nachricht wurde von dersummi am 27. Nov. 2006 editiert.]

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

Proofin
Mitglied
Dpl.Ing


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

Beiträge: 208
Registriert: 24.11.2004

erstellt am: 28. Nov. 2006 19:02    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 dersummi 10 Unities + Antwort hilfreich

Moin,

mal davon abgesehen das bei mir die Elemente richtig angelegt werden,
sind deine Richtung denn nicht richtig?

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

dersummi
Mitglied



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

Beiträge: 43
Registriert: 03.11.2006

erstellt am: 29. Nov. 2006 12:58    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

jetzt scheint es zu gehen! Ich habe beim auskommentieren der löschbefehle weiterhin die punkte lösche lassen, daher konnten die linie nicht fehlerfrei dargestellt werden - blöder fehler!

nachdem ich meinem rechner mal einen neustart gegönnt habe, scheinen auch nun die richtungen richtig zu sein - wenn der pc zu lange läuft und zu viel nebenbei macht, dann scheine ich probleme mit catia zu bekommen!

wenn das jedenfalls nicht am skript liegt, weil es so wie ich es mir gedacht hat sowohl beim auslesen aus dem 3d als auch aus dem 2d funzt! aber entscheident ist ja nur das ich aus meiner skizze die benötigten punkte als 3d koordinaten bekomme - der rest erfolgt ja dann mit diesen koordinaten im 3d!

Danke fürs Testen

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

dersummi
Mitglied



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

Beiträge: 43
Registriert: 03.11.2006

erstellt am: 01. Dez. 2006 14:01    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

hab dir ne pm geschickt, brauche noch einmal hilfe  *schäm* 

[Diese Nachricht wurde von dersummi am 01. Dez. 2006 editiert.]

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

volks
Mitglied


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

Beiträge: 2
Registriert: 09.12.2007

erstellt am: 10. Dez. 2007 17:37    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 dersummi 10 Unities + Antwort hilfreich

Hallo Leute,

ich bin hier neu und wollte zu eurem Skript mal was fragen. Mal abgesehen davon, dass es super funktioniert. Aber wie müßte es angepasst werden um zu den Koordinaten der Punkte auch den jeweiligen Namen des Elements mit auszugeben?

Vielleicht könnt ihr mir damit ja mal auf die Sprünge helfen. Danke, Grüße Volks.

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

Proofin
Mitglied
Dpl.Ing


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

Beiträge: 208
Registriert: 24.11.2004

erstellt am: 13. Dez. 2007 13:11    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 dersummi 10 Unities + Antwort hilfreich

Moin Volks,

kannst du bitte mal dein Skript posten oder zu mindestens den Bereich der Ausgabe.
Dann kann man dir besser helfen.

Im Normalfall kommst du mit DeinObjekt.Name an den Namen des Objektes.

Gruß
Proofin

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

volks
Mitglied


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

Beiträge: 2
Registriert: 09.12.2007

erstellt am: 08. Jan. 2008 20: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 Nur für dersummi 10 Unities + Antwort hilfreich

Hallo Proofin,

sorry, dass ich mich erst jetzt melde aber ich war die letzte Zeit nicht im Land und konnte so nicht nachsehen, ob ich eine Antwort auf meine Frage bekommen habe.

Also mir geht es darum, dass ich als Ausgabe nicht nur die Koordinaten wie folgt:
"Punkt: (x1,y1,z1)"
"Punkt: (x2,y2,z2)"
...
"Punkt: (xi,yi,zi)"
nacheinander in das .txt-file schreibe. Ich möchte gern ein GeoSet (z. B. "GeoSet.Befestigungspunkte") selektieren, dieses nach vorhandenen Punkten ("Pkt.vorne links", "Pkt.vorne rechts", usw.) durchsuchen und dann in das .txt-file den Namen des gewählten GeoSets, die gefundenen Punkte mit Objektnamen und dahinter die entsprechenden Koordinaten schreiben. Die Ausgabe könnte also wie folgt aussehen:

"GeoSet.Befestigungspunkte:

Pkt.vorne links:  (100;50;-20)
Pkt.vorne rechts: (-150;-50;20)"

Ich hoffe, mein Problem wird nun deutlicher und du kannst mir dabei helfen. Bis dann und thanks, Volks.

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