Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Assemblyconstraint DISTANCE mit oder ohne Orientierung?

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:  Assemblyconstraint DISTANCE mit oder ohne Orientierung? (1061 mal gelesen)
jotge
Mitglied
Dipl.-Ing. Maschinenbau


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

Beiträge: 21
Registriert: 03.12.2001

V5R19 + VisualStudio 2012

erstellt am: 05. Jan. 2007 08: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

Hallo,

ich frage in einem vorhandenen Produkt alle Assemblyconstraints
ab und speichere sie extern ab. Dabei gibt es beim Typ DISTANCE
Bedingungen mit Orientierung (z.B. Fläche-Fläche) und solche, die
keine Orientierung haben (z.B. Abstand Puntk - Fläche).
Wenn ich bei letzterem die Orientierung abfrage, krachts da diese
Bedingung keine orientierung hat. Wie kann man das vorher abfragen?

Hier mein CODE: (VS.NET 2005 über ActiveX)

// Relations eines Produkts abfragen:
public int queryRelation(CatiaNode myNode, CatiaRelation[] myRelation)
{
int anzahl = 0;
string ConnectionType = "CATIAConstraints";
MECMOD.Constraint c;
try
{
  myProduct = myNode.Product;
  myConstraints = (MECMOD.Constraints)myProduct.Connections(ref ConnectionType);
  if (myConstraints.Count > 0)
  {
    for (int i = 0; i < myConstraints.Count; i++ )
    {
    try
    {
      object o = i+1;
      c = myConstraints.Item(ref o);
      Console.Write("Bedingung " + c.get_Name() + " - ");
      switch (c.Type)
      {
      case MECMOD.CatConstraintType.catCstTypeReference:
      {..
        break;
      }
      case MECMOD.CatConstraintType.catCstTypeDistance:
      {
        myRelation[anzahl] = new CatiaRelation();
        myRelation[anzahl].Typ = "Abstand";
        myRelation[anzahl].Wert = c.Dimension.ValueAsString();
        Console.WriteLine("Abstand: " + c.GetConstraintElement(1).DisplayName);
        Console.WriteLine("        " + c.GetConstraintElement(2).DisplayName);
        /* So ab hier knallts:  */
        if (c.Orientation == MECMOD.CatConstraintOrientation.catCstOrientSame)
        myRelation[anzahl].Orientierung = "0";
        else
        myRelation[anzahl].Orientierung = "1";
        myRelation[anzahl].Wert = (string)Convert.ToString(c.Dimension.Value);
        anzahl++;
        break;
        }
        }         
      }
      catch (System.Runtime.InteropServices.COMException e)
                        {
                            Console.WriteLine("Keine Constraint?");
                        }
                    }
                }
            }
            catch (System.Runtime.InteropServices.COMException e)
            { return -1; }
            return anzahl;
        }

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: 05. Jan. 2007 09: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 jotge 10 Unities + Antwort hilfreich

Moin jotge,

ich bin mir nicht sicher ob es dir wirklich hilft aber hast du mal versucht vor der if Abfrage das Error Handling mit "On Error Resume Next " abzuschalten??
Nach der if Abfrage kannst es sofort wieder einschalten mit "On Error Goto 0"

Vielleicht hilft es.

Gruß
Proofin

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

jotge
Mitglied
Dipl.-Ing. Maschinenbau


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

Beiträge: 21
Registriert: 03.12.2001

V5R19 + VisualStudio 2012

erstellt am: 05. Jan. 2007 11: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

Hallo Proofin,

mercy, aber wenn ich das Ganze mit einer Exception einpacke (das
ist das Pendant unter C++ zu resume) dann stürzt mir das CATIA
ab, da es die Konstante .Orientation für diese Assemblyconstraint
nicht gibt.

Trotzdem Danke.

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: 05. Jan. 2007 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 Nur für jotge 10 Unities + Antwort hilfreich

Hallo jotge,

eine "saubere" Lösung habe ich hierfür auch nicht gefunden. Beim Versuch  das mit Error-Handling zu lösen, bekam ich auch nur das allseits beliebte "click OK to terminate".
Ich habe das jetzt mit einem Workaround über die BRep-Strings der referenzierten Elemente gelöst. Vor dem Zugriff auf die Orientierung frage ich mittels Stringmanipulation ab ob es sich um ein "Face-Face"-Constraint handelt oder nicht. Das klappt soweit.

Gruß
CAMiCADse

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

jotge
Mitglied
Dipl.-Ing. Maschinenbau


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

Beiträge: 21
Registriert: 03.12.2001

V5R19 + VisualStudio 2012

erstellt am: 05. Jan. 2007 11: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

Hallo CAMiCADse,

kannst DU mir das etwas genauer erklären mit der Face2Face-Abfrage?

Mercy, Jochen

------------------
Jochen Geschwentner
WIGE Konstruktionen

_______________________________________________________________

W     W   III    GGGG    EEEEEE       WIGE Konstruktionen
W     W    I    G    G   E             Schwanenstrasse 4
W     W    I    G        EEE            88214 Ravensburg
W  W  W    I    G  GGG   E          Phone: ++49-751-36609-19
W W W W    I    G    G   E         Jochen.Geschwentner@wige.com  
W   W    III    GGGG    EEEEEE          ICQ: 4319610
                                     http://www.wige.com/ 
_______________________________________________________________

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: 05. Jan. 2007 12:57    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 jotge 10 Unities + Antwort hilfreich

Hallo Jochen,

für jemand aus meiner alten Heimat gerne nochmal ausführlich

Mit GetConstraintElement kommst du an die Elemente (Reference), mit DisplayName an den String. Der String enthält den Pfad zum Part und den BRep-String der Geometrie. Im BRep-String (alles nach "/!") suche ich nach "Vertex","Edge","Face". Davon leite ich ab, ob es ein "Face-Face" oder z.b. ein "Vertex-Face"-Constraint ist.
Ein Vertex-BRep enthält auch "Face", aber ein Face-BRep enthält kein "Vertex". Die Abfrage erfolgt also der Reihe nach, erst "Vertex", dann "Edge", dann "Face".

Code-Schnipsel:

'Constraint-Strings checken , i=1 to 2
If strCompleteRef(i).Contains("(Vertex") Then
  temp(i) = "Vertex"
ElseIf strCompleteRef(i).Contains("(Edge") Then
  temp(i) = "Edge"
ElseIf strCompleteRef(i).Contains("(Face") Then
  temp(i) = "Face"

'Dann Abfragen ob beide Elemente vom Typ "Face" sind
If temp(1)="Face" AND temp(2)="Face" Then ... -> Orientation vorhanden


Das ganze muß dann für alle möglichen Fälle erweitert werden (z.B. "Plane-Plane" )

Hoffe das war verständlicher

gruß
CAMiCADse

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

jotge
Mitglied
Dipl.-Ing. Maschinenbau


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

Beiträge: 21
Registriert: 03.12.2001

V5R19 + VisualStudio 2012

erstellt am: 05. Jan. 2007 19: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 CAMiCADse,

leider hilft mir das nicht weiter, da unsere Assemblyconstraints auf
Veröffentlichungen mit "teilweise" irreführenden Bezeichnungen ver-
weisen. So kann beispielsweise eine Fläche als "Basis_1" bezeichnet
sein, theoretisch kann das aber auch ein Punkt sein.

Aber was mir in der Tat weiterhelfen würde wäre in einem Produkt
ein belibiges geometrisches Element daraufhin zu prüfen, was es
für einen Typ hat.

Gruss, Jochen

PS: Was soll das mit der Heimat?

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: 08. Jan. 2007 09: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 Nur für jotge 10 Unities + Antwort hilfreich

Hallo Jochen,

ob du mit Publications arbeitest oder nicht spielt dabei keine Rolle. Der String des Geometrieelements ist derselbe. (Der Pfad ist unterschiedlich, aber der wird ja nicht ausgewertet).

Mach doch mal einen Test!

Gruß
CAMiCADse

P.S.
Wegen der Heimat:
Hab mich nur auf deine Signatur bezogen, und RV ist eben meine alte Heimat!

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