Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Updatefehler bei der Schnitterzeugung

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
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für CATIA & Co.
  
Mit der Kisters 3DViewStation komplexeste 3D CAD-Daten beherrschen, eine Pressemitteilung
Autor Thema:  Updatefehler bei der Schnitterzeugung (1411 mal gelesen)
bernds
Mitglied



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

Beiträge: 17
Registriert: 11.09.2003

erstellt am: 14. Okt. 2003 10:09    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 hab ein Problem mit der Schnitterzeugung und dem anschließednen Update im GSD.

Mein Makro erzeugt eine Reihe von Schnitten durch mehrere Join Flächen. Es kommt allerdings vor, dass Join-Flächen dabei sind, die nicht in der Schnittebene liegen und somit nicht geschnitten werden können. Auch für diese Schnitte wird im Baum jeweils ein Intersect.x erzeugt. Beim Update steigt das Makro aus.

Ein manuelles Update bringt Abhilfe, da man dabei im Update Diagnosis Fenster folgende Möglichkeiten hat: Edit, Deactivate, Isolate, Delete.

Wenn ich die Schnitte in R11SP4 manuell erzeuge erstellt Catia eine Gruppe, in der die Schnitte deaktiviert sind. Das aufgezeichnete Makro steigt aber auch wieder beim Update aus.

Ist es möglich aus dem Makro heraus fehlerhafte Schnitte zu löschen bzw. zu deaktivieren?

Danke
Bernd

PS: Eine Lösung wäre super, da es häufiger der Fall ist, dass man wie aus V4 gewohnt einen Schnitt mit der Auswahl (*fac) erzeugt und da waren ja auch nie alle Flächen betroffen.

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

RonnyS
Mitglied



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

Beiträge: 97
Registriert: 04.09.2003

erstellt am: 14. Okt. 2003 10:45    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 bernds 10 Unities + Antwort hilfreich

hmm kenn mich damit zwar nichht aus aber, versuch doch das Erstellen selbst zu verhindern dann hast du diese Probleme nicht. Dazu gibt es 2 Möglichkeiten:

1. Berechnen ob die sich überhaupt schneiden. Hast du evtl. Koordinaten der Flächen die du nutzen kannst(wenn du die Flächen auch per Makro erstellt hast sollte das kein Prob sein)? dann brauchst du nur noch eine schlaue funktion die testet ob die halt irgendwo mal denselben Raum einnehmen(is wahrscheinlich nicht leicht, ich weiss)

2. Fehler abfangen, bin zwar erst am VBa lernen aber in C++ und Java kannst du Fehler einfach mittels
try {
//hier kann der fehler auftreten
}
catch(Exception e){
//Hier was dann getan werden soll, nichts zum ignorieren
}
ignorieren und weitermachen. In VBa habsch gelesen wird eine Fehlerbehandlung mittels "On Error was soll gemacht werden" gebaut...on error gild dabei immer für die nächste folgende programmanweisung

nicht getestet, aber theoretisch sollte das dann in etwa so aussehen

while ichwillnochwaserstellen
    on error blafoo
    // hier die operation die joint
wend
sub blafoo
end sub

oder:

while ichwillnochwaserstellen
        on error go to fehler
        // hier die operation die joint
      undweiter:
wend

goto ende

fehler:
go to undweiter

ende:

vielleicht hilft dir das ja als denkansatz

------------------
gr33t7 Ronny

[Diese Nachricht wurde von RonnyS am 14. Oktober 2003 editiert.]

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

gdir
Mitglied



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

Beiträge: 157
Registriert: 25.06.2003

erstellt am: 14. Okt. 2003 11: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 bernds 10 Unities + Antwort hilfreich

Hallo Bernd,

eine Lösung ist möglich. Folgendes Prinzip funktioniert bei mir:

1. Schnittobjekt erzeugen (hybridshapefactory.AddNewIntersection(...))
2. Automatisches Fehlerhandling ausschalten (On Error Resume Next)
3. Update auf das Intersection-Objekt (Part.UpdateObject(Intersection))
4. Return-Code abfragen: Falls 0, Update korrekt und Intersection möglich. Falls ungleich 0, Update nicht möglich, also keine Intersection
5. Autom. Fehlerhandling wieder ein (On Error Goto 0)
6. Falls Return-Code 0 war, Intersection-Objekt zum HybridBody hinzufügen (HybridBody.AppendHybridShape Intersection)

Viele Grüße

Günther

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

gdir
Mitglied



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

Beiträge: 157
Registriert: 25.06.2003

erstellt am: 14. Okt. 2003 11: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 Nur für bernds 10 Unities + Antwort hilfreich

Hier ist auch noch eine Beispiel-Subroutine.

'****************************************************************************
' Sub IntersectPlaneSurface                                                 
'                                                                           
' Creates the intersection between a plane (given by its reference) and a
' surface. If both elements intersect, the intersection is added to iOpenBody
' and renamed to iName.
' Because this subroutine is always called from a loop, where a single plane
' intersects multiple surface, we create the reference to the plane only once
' outside the loop and outside this subroutine. We pass plane by its reference
' instead of creating the reference over and over again in this subroutine
'                                                                           
' Variables:
' iPart: The part
' iHybridShapeFactory: The parts HybridShapeFactory
' iOpenBody: The open body to which the intersection will be added
' iSurface: The surface to be intersected
' iRefToPlane: The reference to the section plane
' iName: The name of iIntersection
' iIntersection: The created intersection object
'                                                                 
'****************************************************************************

Sub IntersectPlaneSurface (iPart As Part, iHybridShapeFactory As HybridShapeFactory, _
iOpenBody As HybridBody, iSurface As HybridShape, iRefToPlane As Reference, _
iName As CATBSTR, iIntersection As HybridShapeIntersection)

Dim refToiSurface As Reference

'Create a reference to iSurface
Set refToiSurface = iPart.CreateReferenceFromObject(iSurface)

'Disable automatic error handling as we don't know
'whether there will be an intersection or not
On Error Resume Next

'Create the intersection object
'This works in any case, even if both elements don't intersect at all
'At this moment the element is only temporary. It will be discarded,
'if it is not appended to an open body
Set iIntersection = iHybridShapeFactory.AddNewIntersection(iRefToPlane, refToiSurface)

'Test if both elements intersect
'If not, update will cause an error
iPart.UpdateObject(iIntersection)

'In case of no error, both elements intersect and the intersection has to be
'added to the desired open body
If Err.Number = 0 Then

'Add intersection to current open body
iOpenBody.AppendHybridShape iIntersection

'Rename the intersection
RenameHybridShape iPart, iHybridShapeFactory, iIntersection, iName


End If
On Error Goto 0

End Sub

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

bernds
Mitglied



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

Beiträge: 17
Registriert: 11.09.2003

erstellt am: 14. Okt. 2003 12:45    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

Vielen Dank Euch beiden für die schnelle Hilfe.

@gdir Dein Script hat mir wirklich aus der Klemme geholfen.

Ich sag nur 10 points.

Bernd

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)2024 CAD.de | Impressum | Datenschutz