Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  nur leeres Element löschen

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:  nur leeres Element löschen (2027 mal gelesen)
Melanie1982
Mitglied


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

Beiträge: 6
Registriert: 11.02.2009

erstellt am: 11. Feb. 2009 11:05    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 bin neu und blutiger Anfänger bei Scripten usw. Leider habe ich im Moment keine Zeit, mir das auf die Schnelle beizubringen, deshalb hoffe ich auf Verständnis und Hilfe.

Ich möchte aus einem CATPart ein bestimmtes geometrisches Set löschen, allerdings nur, wenn dieses leer ist. Ich habe schon etwas mit der Makroaufzeichnung rumprobiert und habe bisher nur das GeoSet über die Suchfunktion selektieren können. Nun weiß ich nicht weiter.

Vielen Dank im Voraus

Grüße
Melanie

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

denyo_1
Moderator
Manager


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

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: 11. Feb. 2009 14: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 Melanie1982 10 Unities + Antwort hilfreich

Hallo Melanie,

dafür brauchst du eine Abfrage. Wichtig ist erst mal das du dir das Objekt des geometrischen Set´s holst (entweder über die Selektion (das hast du ja schon) oder aber direkt ansprechen. Wenn du das Objekt hast gibt es innerhalb des geometrischen Sets eine Klasse HybridBodies (für alle offenen Konturen z.B. Punkte, etc.) und eine HybridShapes (alle geschlossenen Konturen (z.B. Flächen, etc.)

Code:

Dim oGeoSet as HybridBody
Dim iDoc as Document
Dim oPart as Part
Dim oSel as Selection

Set oDoc = CATIA.ActiveDocument
Set oSel = oDoc.Selection
oSel.Clear
Set oPart = oDoc.Part
Set oGeoSet = oPart.HybridBodies.Item(1) 'Das erste geometrische Set in der Kollektion wird angesprochen
'Das kannst du aber auch über deine Selektion machen

'Hier bingt die Abfrage ob das geo-Set leer ist
If oGeoSet.HybridBodies.Count = 0 and oGeoSet.HybridShapes.Count = 0 then
  'Zum löschen des geo-Sets wird selbiges in eine Selektio gepackt
  oSel.Add oGeoSet
End If

'Wenn die Selektion nicht leer ist (sprich das geo-Set hat keine Kinder) dann wird es gelöscht
If oSel.Count > 0 then
  oSel.Delete
End If

oSel.Clear


ANMERKUNG: Code ist nicht getestet sollte so aber funktionieren

------------------
MFG Daniel

Die KATJA ist halt doch nur ne zickige Französin

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

Melanie1982
Mitglied


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

Beiträge: 6
Registriert: 11.02.2009

erstellt am: 11. Feb. 2009 15: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

Hallo,
das funktioniert erstmal super. Danke. Aber ich wollte es dann mit meiner Selektion probieren, so wie ich mir das als Ahnungslose gedacht habe (siehe unten). Aber das geht wohl nicht so einfach. Wenn du mir da noch einen Tipp geben könntest, wäre ich für heute wunschlos glücklich.

Dim partDocument1 As Document
Set partDocument1 = CATIA.ActiveDocument

Dim selection1 As Selection
Set selection1 = partDocument1.Selection

selection1.Search "(Name=Lochbildflaechen & CATGmoSearch.OpenBodyFeature),all"


Dim oGeoSet as HybridBody
Dim iDoc as Document
Dim oPart as Part
Dim oSel as Selection

Set oDoc = CATIA.ActiveDocument
Set oSel = oDoc.Selection
oSel.Clear
Set oPart = oDoc.Part
Set oGeoSet = selection1

If oGeoSet.HybridBodies.Count = 0 and oGeoSet.HybridShapes.Count = 0 then
 
  oSel.Add oGeoSet
End If

If oSel.Count > 0 then
  oSel.Delete
End If

oSel.Clear


Grüße
Melanie

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

denyo_1
Moderator
Manager


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

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: 11. Feb. 2009 15: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 Nur für Melanie1982 10 Unities + Antwort hilfreich

Hi,

das ist logisch mein Code war ohne die Selektion gedacht. Hier mal der Code ein bisschen angepasst:

Code:

Dim oGeoSet as HybridBody
Dim iDoc as Document
Dim oPart as Part
Dim oSel as Selection

Set oDoc = CATIA.ActiveDocument
Set oSel = oDoc.Selection
Set oPart = oDoc.Part

'Selektion leeren falls schon was darin enthalten ist
oSel.clear
'hier suchst du dein geo-Set
oSel.Search "(Name=Lochbildflaechen & CATGmoSearch.OpenBodyFeature),all"

'Hier weißt du den Inhalt der Selektion zum Objekt hinzu
If oSel.Count > 0 then
  Set oGeoSet = oSel.Item(1).Value
Else
  MsgBox("Es wurde kein Element selektiert"! +chr(10) +"Bitte prüfen Sie den Namen des geo-Sets!")
  Exit Sub
End If

If oGeoSet.HybridBodies.Count = 0 and oGeoSet.HybridShapes.Count = 0 then

  oSel.Add oGeoSet
End If

If oSel.Count > 0 then
  oSel.Delete
End If

oSel.Clear


------------------
MFG Daniel

Die KATJA ist halt doch nur ne zickige Französin

   

[Diese Nachricht wurde von denyo_1 am 11. Feb. 2009 editiert.]

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

Melanie1982
Mitglied


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

Beiträge: 6
Registriert: 11.02.2009

erstellt am: 11. Feb. 2009 16:00    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,
das richtige Set wird schonmal gelöscht, allerdings egal ob Geometrie drin ist oder nicht. Ich muss dazu sagen, dass ich die Zeile mit der MsgBox rausgenommen habe, da diese einen Fehler erzeugt hat. Aber das sollte ja nicht viel zu sagen haben.

Grüße
Mel

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: 12. Feb. 2009 00:33    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 Melanie1982 10 Unities + Antwort hilfreich

Hallo Melanie1982,

probier doch mal folgende Korrektur ( ) am Code:

Code:
Dim oGeoSet as HybridBody
Dim iDoc as Document
Dim oPart as Part
Dim oSel as Selection

Set oDoc = CATIA.ActiveDocument
Set oSel = oDoc.Selection
Set oPart = oDoc.Part

'Selektion leeren falls schon was darin enthalten ist
oSel.clear
'hier suchst du dein geo-Set
oSel.Search "(Name=Lochbildflaechen & CATGmoSearch.OpenBodyFeature),all"

'Hier weißt du den Inhalt der Selektion zum Objekt hinzu
If oSel.Count > 0 then
  Set oGeoSet = oSel.Item(1).Value
Else
  MsgBox("Es wurde kein Element selektiert"! & chr(10) & "Bitte prüfen Sie den Namen des geo-Sets!")
  Exit Sub
End If

oSel.Clear

If oGeoSet.HybridBodies.Count = 0 and oGeoSet.HybridShapes.Count = 0 then
  oSel.Add oGeoSet
End If

If oSel.Count > 0 then
  oSel.Delete
End If

oSel.Clear





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

Melanie1982
Mitglied


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

Beiträge: 6
Registriert: 11.02.2009

erstellt am: 12. Feb. 2009 08:27    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,
ganz vielen Dank. Es funktioniert. Ein kleines Problemchen gibts allerdings noch: es wird zwar nicht gelöscht, wenn ne Fläche drin ist, aber es wird gelöscht, wenn z.B. nur eine Skizze drin ist.
Es muss bestimmt noch eine Bezeichnung für Skizzen in den Satz: If oGeoSet.HybridBodies.Count = 0 and oGeoSet.HybridShapes.Count = 0 then  ,oder?

Grüße
Mel

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

Melanie1982
Mitglied


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

Beiträge: 6
Registriert: 11.02.2009

erstellt am: 12. Feb. 2009 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

Hallo,
und ich bin auf noch ein Problem gestoßen: Es gibt einen Fehler, wenn in dem Namen des geometrischen Sets ein Bindestrich steht.

Grüße
Mel

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

Melanie1982
Mitglied


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

Beiträge: 6
Registriert: 11.02.2009

erstellt am: 12. Feb. 2009 10:52    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

Ok, letzteres Problem ist gelöst. Einfach den Namen in '....' setzen.

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

denyo_1
Moderator
Manager


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

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: 12. Feb. 2009 14: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 Melanie1982 10 Unities + Antwort hilfreich

Hallo,

sorry war mein Fehler das es erst nicht funktioniert hat. Du musst natürlich die Selektion löschen vor der Abfrage ob da Teile drinnen sind. Sonst wird zwar die Abfrage durchlaufen und liefert auch ein Ergbniss aber das selektierte Set wird gelöscht weil es eben selektiert ist 

------------------
MFG Daniel

Die KATJA ist halt doch nur ne zickige Französin

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

AndiKrue
Mitglied
Berater


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

Beiträge: 72
Registriert: 04.12.2008

Windows XP Prof x64 Edition
Intel Xeon W3520 @ 2.67 GHz
8 GB RAM,
Nvidia Quadro FX 1800
CATIA V5R19

erstellt am: 19. Feb. 2009 16:44    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 Melanie1982 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Melanie1982:
Hallo,
ganz vielen Dank. Es funktioniert. Ein kleines Problemchen gibts allerdings noch: es wird zwar nicht gelöscht, wenn ne Fläche drin ist, aber es wird gelöscht, wenn z.B. nur eine Skizze drin ist.
Es muss bestimmt noch eine Bezeichnung für Skizzen in den Satz: If oGeoSet.HybridBodies.Count = 0 and oGeoSet.HybridShapes.Count = 0 then  ,oder?

Grüße
Mel


#

Hallo, so ich habs getestet, geht einwandfrei mit "oGeoSet.HybridSketches.Count = 0"
und wenn du ganz sicher sein willst fragst du noch "oGeoSet.Bodies.Count = 0" und "oGeoSet.GeometricElements.Count = 0"
ab

Grüße

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