Autor
|
Thema: V- und H-Constrains löschen (1550 mal gelesen)
|
Blechpatscher Mitglied Konstrukteur
Beiträge: 11 Registriert: 13.12.2009 CATIA V5 R16 SP9 mit Win XP SP3
|
erstellt am: 22. Jan. 2010 12:00 <-- editieren / zitieren --> Unities abgeben:
Hallo Catia-Programmiergemeinde! hab eine kleine Frage Versuche per Makro sämtliche V- und H-Bedienungen in allen Skizzen eines Parts zu löschen: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ selection.Search "CATSketchSearch.MfConstraint.Name=Parallelism*,all" selection.Delete ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Dabei fliegen auch die "normalen" parallel-Bedinungen mit raus. Kenn jemand ein Weg, wie man nur V- und H-Bedienungen auswählen kann? ------------------ Gruß Blechpatscher Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 22. Jan. 2010 12:18 <-- editieren / zitieren --> Unities abgeben: Nur für Blechpatscher
Servus Du könntest über die Suche alle Parallelbedingungen suchen, und dann jede einzelne Prüfen ob eine Referenz ("GetConstraintElement(i)") den Achsen entspricht und diese dann löschen. Aber was hast du vor, könntest du auch einfach die Skizze neu referieren (positionierte Skizze)? Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. [Diese Nachricht wurde von bgrittmann am 22. Jan. 2010 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DanielFr. Moderator Manager
Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3
|
erstellt am: 22. Jan. 2010 13:35 <-- editieren / zitieren --> Unities abgeben: Nur für Blechpatscher
Hallo, habe mal kurz Bernd´s Idee aufgegriffen und ein kleinen Script daraus gemacht. Hier das Ergebnis (es werden alle V- und H-Bedingungen aus den Skizzen gelöscht) Code:
Sub CATMain() Dim intDoc As Document Dim intSel As Selection Dim intSearchType As CatConstraintType: intSearchType = catCstTypeParallelism Dim intConstaint As Constraint Dim intConstRef As Reference Dim intDelMsgBoxRes As VbMsgBoxResult Dim intConstaintColl As New Collection Set intDoc = CATIA.ActiveDocument Set intSel = intDoc.Selection intSel.Clear intSel.Search "CATSketchSearch.MfConstraint,all" If intSel.Count > 0 Then For i = 1 To intSel.Count intConstaintColl.Add intSel.Item(i).Value Next Else MsgBox "Es wurden keine Parallel-Bedigungen im Dokument gefunden", vbInformation, "Keine Bedingungen gefunden" Exit Sub End If intSel.Clear For i = 1 To intConstaintColl.Count Set intConstaint = intConstaintColl.Item(i) If intConstaint.Type = intSearchType Then For ii = 1 To 2 Set intConstRef = intConstaint.GetConstraintElement(ii) If InStr(1, intConstRef.DisplayName, "VDirection") <> 0 Or InStr(1, intConstRef.DisplayName, "HDirection") <> 0 Then intSel.Add intConstaint End If Next End If Next If intSel.Count > 0 Then intDelMsgBoxRes = MsgBox("Es wurden " & intSel.Count & " Parallel-Bedingungen gefunden" + vbNewLine + _ "Wollen Sie diese nun löschen?", vbQuestion + vbYesNo, "Bedigungen löschen?") If intDelMsgBoxRes = vbYes Then intSel.Delete End If End If intSel.Clear End Sub
UND Bernd bekommst 10U´s von mir für die Idee ------------------ MFG Daniel Systeminformation | Inoffizielle CATIA Hilfeseite | CATIA FAQ | Suche | TraceParts (Normteile...) | 3D Content Central (noch mehr Normteile...) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Blechpatscher Mitglied Konstrukteur
Beiträge: 11 Registriert: 13.12.2009 CATIA V5 R16 SP9 mit Win XP SP3
|
erstellt am: 22. Jan. 2010 14:48 <-- editieren / zitieren --> Unities abgeben:
|
Blechpatscher Mitglied Konstrukteur
Beiträge: 11 Registriert: 13.12.2009 CATIA V5 R16 SP9 mit Win XP SP3
|
erstellt am: 22. Jan. 2010 15:06 <-- editieren / zitieren --> Unities abgeben:
Hallo Daniel, du machst gleich Nägel mit Köpfen! Leider bekomme ich eine Fehlermeldung und die Analyse übersteigt meine derzeitige Kapazität Könnte ich mir nich auf irgendeine Art catCsttTypeHorizontality und catCstVerticality zunutze machen? ------------------ Gruß Blechpatscher Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DanielFr. Moderator Manager
Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3
|
erstellt am: 22. Jan. 2010 18:13 <-- editieren / zitieren --> Unities abgeben: Nur für Blechpatscher
|
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 22. Jan. 2010 21:26 <-- editieren / zitieren --> Unities abgeben: Nur für Blechpatscher
Servus Daniel Also be mir läuft das Script nicht als CATScript oder CATvbs (auch nach einigen Anpassungen). Kann man Collections in CATScrips oder CATvbs verwenden oder geht das nur über den Umweg eines Arrays? Gruß Bernd
------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DanielFr. Moderator Manager
Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3
|
erstellt am: 23. Jan. 2010 07:26 <-- editieren / zitieren --> Unities abgeben: Nur für Blechpatscher
Hallo, oh ich war wohl schon im Wochenende. Collection kannst du weder in CATScript noch in CATVbs nutzen. Diese sind rein der CATVba vorenthalten. So jetzt hier mal die CATScript Version. Alle die es als CATVbs nutzen wollen müssen die Deklarationen auskommentieren das macht CATVbs selbständig. Code:
Sub CATMain() Dim intDoc As Document Dim intSel As Selection Dim intSearchType As CatConstraintType Dim intConstaint As Constraint Dim intConstRef As Reference Dim intDelMsgBoxRes As VbMsgBoxResult Dim intConstaintColl() As Constraint Set intDoc = CATIA.ActiveDocument Set intSel = intDoc.Selection intSel.Clear intSearchType = catCstTypeParallelism intSel.Search "CATSketchSearch.MfConstraint,all" If intSel.Count > 0 Then ReDim intConstaintColl(intSel.Count - 1) As Constraint For i = 1 To intSel.Count Set intConstaintColl(i - 1) = intSel.Item(i).Value Next Else MsgBox "Es wurden keine Parallel-Bedigungen im Dokument gefunden", vbInformation, "Keine Bedingungen gefunden" Exit Sub End If intSel.Clear For i = 1 To UBound(intConstaintColl) Set intConstaint = intConstaintColl(i - 1) If intConstaint.Type = intSearchType Then For ii = 1 To 2 Set intConstRef = intConstaint.GetConstraintElement(ii) If InStr(1, intConstRef.DisplayName, "VDirection") <> 0 Or InStr(1, intConstRef.DisplayName, "HDirection") <> 0 Then intSel.Add intConstaint End If Next End If Next If intSel.Count > 0 Then intDelMsgBoxRes = MsgBox("Es wurden " & intSel.Count & " Parallel-Bedingungen gefunden" + Chr(10) + _ "Wollen Sie diese nun löschen?", vbQuestion + vbYesNo, "Bedigungen löschen?") If intDelMsgBoxRes = vbYes Then intSel.Delete End If End If intSel.Clear MsgBox "Das Makro wurde erfolgreich beendet!", vbInformation, "Makro erfolgreich" End Sub
------------------ MFG Daniel Systeminformation | Inoffizielle CATIA Hilfeseite | CATIA FAQ | Suche | TraceParts (Normteile...) | 3D Content Central (noch mehr Normteile...) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Blechpatscher Mitglied Konstrukteur
Beiträge: 11 Registriert: 13.12.2009 CATIA V5 R16 SP9 mit Win XP SP3
|
erstellt am: 23. Jan. 2010 09:15 <-- editieren / zitieren --> Unities abgeben:
Hallo Daniel, vielen Dank für deine Unterstützung! Das Makro Funktioniert, nach einer kleiner Anpassung, wunderbar. Habe an drei Stellen "-1" löschen müssen. Hoffe bloss das ich dabei nicht irgendwas kaputt gemacht habe? In deiner ersten Antwort habe ich mitgekriget, dass Bernd von dir Units bekommen hat, das war mir neu und ich möchte jetzt auch mich auf diese Art bedanken! ------------------ Gruß Blechpatscher Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DanielFr. Moderator Manager
Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3
|
erstellt am: 23. Jan. 2010 17:34 <-- editieren / zitieren --> Unities abgeben: Nur für Blechpatscher
|
Blechpatscher Mitglied Konstrukteur
Beiträge: 11 Registriert: 13.12.2009 CATIA V5 R16 SP9 mit Win XP SP3
|
erstellt am: 25. Jan. 2010 19:52 <-- editieren / zitieren --> Unities abgeben:
Hallo Daniel, das Makro läuft ohne Fehler durch. Im Quellcode habe ich eine Abzweigung endeckt, für den Fall das keine Parallel-Bedigungen gefunden werden. Leider greift es nicht: bei fehlenden Bedienungen endet das Makro mit einer Erfolgsmeldung, obwohl es gar nichts gemacht hat Ist nur eine Schönheitssache, aber ich komme nicht drauf an was es liegt ------------------ Gruß Blechpatscher Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DanielFr. Moderator Manager
Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3
|
erstellt am: 26. Jan. 2010 10:28 <-- editieren / zitieren --> Unities abgeben: Nur für Blechpatscher
|