Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Body von Part in Produkt selektieren/verstecken

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:  Body von Part in Produkt selektieren/verstecken (3507 mal gelesen)
BenjaminBihler
Mitglied
Mathematiker

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

Beiträge: 9
Registriert: 25.09.2012

erstellt am: 25. Sep. 2012 11:29    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 arbeite mit VBA in CATIA V5.19. Ich bin in einem Produktdokument. Das Produkt besteht aus mehreren Parts, diese wiederum bestehen aus mehreren Bodies usw. Ich würde jetzt gerne einen ganz bestimmten Body von einem ganz bestimmten Part ins No-Show stellen. Dies funktioniert nicht richtig.


Über folgenden Code komme ich an den Part und den Body ran:

-----------------------------------------------------------
Dim selection
Dim document
Dim thisProduct As Product

Set document = CATIA.ActiveDocument
Set selection = CATIA.ActiveDocument.selection
Set thisProduct = document.Product

Dim pressureRollerPart As part
Dim pressureRoller As body

Dim partIndex As Integer
For partIndex = 1 To thisProduct.Products.Count
    Dim thisPartDocument As partDocument
    Set thisPartDocument = _
        thisProduct.Products.item(partIndex).ReferenceProduct.parent
   
    Dim thisPart As part
    Set thisPart = thisPartDocument.part
 
    If (thisPart.name = "Partname") Then
       
        Set pressureRollerPart = thisPart
       
        Set pressureRoller = thisPart.Bodies.item( "Bodyname")
    End If
Next
-----------------------------------------------------------

Der Code

-----------------------------------------------------------
selection.Clear
selection.add pressureRollerPart
selection.VisProperties.SetShow catVisPropertyNoShowAttr
-----------------------------------------------------------

führt aber dazu, daß nicht nur der gewünschte Body in dem Part versteckt wird, sondern der komplette Part.

Ist ja auch kein Wunder, habe ich mir gedacht, das ist ja auch die Produktselektion. Also probieren ich folgendes:

-----------------------------------------------------------
Dim pressureRollerSelection As selection
Set pressureRollerSelection = pressureRollerPart.parent.selection
   
pressureRollerSelection.Clear
pressureRollerSelection.add pressureRoller
   
pressureRollerSelection.VisProperties.SetShow catVisPropertyNoShowAttr
-----------------------------------------------------------

Das klappt - aber NUR, wenn der Benutzer vorher durch einen Doppelklick auf den gewünschten Part diesen aktiviert hat. Dann wird korrekt der Body ausgeblendet. Wenn dagegen ein anderer Part im Produkt aktiv (blau unterlegt) ist, bewirkt die Selektion und das Ausblenden gar nichts.

Gibt es dafür einen Trick? Die Funktion sollte zuverlässig den Unterbody ausblenden, egal worauf der Benutzer zuletzt doppelt geklickt hat.

Für jeden Hinweis wäre ich enorm dankbar!


Ciao,
Benjamin Bihler

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

imation1999
Mitglied
dipl.-ing. Maschinenbau


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

Beiträge: 276
Registriert: 02.08.2011

Dell Precision T3500
Intel® Xeon® Quad Core
NVIDIA Quadro® 5000
Win7 x64 Ultimate
CATIA V5 R20 SP2

erstellt am: 25. Sep. 2012 12: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 Nur für BenjaminBihler 10 Unities + Antwort hilfreich

Hallo Benjamin,

wenn ich die Aufgabe gut verstanden:

HauptProduct muß ACTIV sein.

Code:
Language="VBSCRIPT"

Sub CATMain()

Dim productDocument1 As Document
Set productDocument1 = CATIA.ActiveDocument

Dim selection1 As Selection
Set selection1 = productDocument1.Selection

selection1.Search "(Name="PartName" & CATPrtSearch.PartFeature),all"

selection1.Search "(Name="BodyName" & ((((CATStFreeStyleSearch.BodyFeature + CATPrtSearch.BodyFeature) + CATGmoSearch.BodyFeature) + CATSpdSearch.SpdBodyRef) + CATSpdSearch.BodyFeature)),sel"

Set VisPropSet1 = Selection1.VisProperties
VisPropSet1.SetShow catVisPropertyNoShowAttr

End Sub


ich bitte um entschuldigung wenn ich etwas falsch verstanden!

[Diese Nachricht wurde von imation1999 am 25. Sep. 2012 editiert.]

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

BenjaminBihler
Mitglied
Mathematiker

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

Beiträge: 9
Registriert: 25.09.2012

erstellt am: 25. Sep. 2012 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

Hallo imation1999,

vielen Dank für die Antwort. Aber das löst mein Problem nicht. Falls das Produkt aktiv ist, wird mit deinem Code bei mir nicht nur der spezielle Body in dem Part selektiert, sondern der komplette Part.

Ciao,
Benjamin

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

imation1999
Mitglied
dipl.-ing. Maschinenbau


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

Beiträge: 276
Registriert: 02.08.2011

Dell Precision T3500
Intel® Xeon® Quad Core
NVIDIA Quadro® 5000
Win7 x64 Ultimate
CATIA V5 R20 SP2

erstellt am: 25. Sep. 2012 12: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 BenjaminBihler 10 Unities + Antwort hilfreich

Bei mir werden nur die genannten Bodys verstecken.

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

geekv5
Mitglied
Konstrukteur


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

Beiträge: 214
Registriert: 13.07.2011

Notebook<P>MSI GX660R
Intel Core i5 460M
8GB DDR3
1GB Mobility HD5870
80GB Intel X25-M Postville
250GB HDD<P>Desktop<P>AMD Phenom II X4 965
1GB HD4890@ FirePro V8700
8GB DDR3-1600
2,5TB HDD<P>Belinea 2485 S1W 24" MVA

erstellt am: 01. Okt. 2012 11: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 BenjaminBihler 10 Unities + Antwort hilfreich

Also wenn ich das richtig verstanden habe gibt es nur eine Selektion und zwar die des aktiven Dokuments, was in deinem Falle das oberste Produkt ist und auch nicht geändert werden kann.. Und statt dem Part einfach den Körper der Selektion hinzufügen, den willst du ja auch ausblenden..

Also

Code:

set selection = CATIA.ActiveDocument.Selection
selection.Clear
selection.add pressureRoller
selection.VisProperties.SetShow catVisPropertyNoShowAttr

------------------
Seid nicht dumm, lest drin rum!

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



Techniker im After Sales Service (m/w/d)

Für die HAIMER Microset GmbH in Bielefeld suchen wir ab sofort einen:

Techniker im After Sales Service (m/w/d)

Die HAIMER Gruppe ist ein familiengeführtes, mittelständisches Unternehmen mit Hauptsitz in Igenhausen bei Augsburg. Wir sind europäischer Marktführer im Bereich von hochpräzisen Werkzeugaufnahmen für die Metallindustrie und weltweit führend in der Werkzeugschrumpf-, Auswucht- und Voreinstelltechnik....

Anzeige ansehenElektrotechnik, Elektronik
BenjaminBihler
Mitglied
Mathematiker

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

Beiträge: 9
Registriert: 25.09.2012

erstellt am: 01. Okt. 2012 12: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 imation1999 und geekv5,


es sieht so aus, als ob ihr beide recht hattet. Durch eure Hinweise angeregt, habe ich noch weiter herumprobiert. Der Grund für das fehlerhafte Ausblenden ist wohl nicht die Frage, welches Element des Strukturbaums vorher aktiv war, sondern in welcher Workbench ich mich befunden habe.

Wenn ich durch Doppelklick auf einen Unterpart diesen aktiviert habe, habe ich mich auch in der Part-Workbench befunden. Und in diesem Fall klappt die Selektion nicht, es sei denn, der Part ist aktiviert, dessen Unterelement ausgeblendet werden soll.

Wenn ich mich jedoch (zum Beispiel) in der DMU-Kinematics-Workbench befinde, spielt es keine Rolle, welcher Part aktiv ist - es wird immer das richtige Unterelement selektiert und ausgeblendet.

Ich habe jetzt folgende Zeilen zu meinem Code hinzugefügt:

' Switch to kinematics workbench to be able to hide the pressure roller
' no matter what structure tree element is active at the moment.
If ("DMUKinematics" <> CATIA.GetWorkbenchId) Then
    CATIA.StartWorkbench ("DMUKinematics")
End If

Und damit funktioniert das Ausblenden bisher einwandfrei! :-)


Herzlichen Dank für eure Hilfe.
Benjamin

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