Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Elementen ausblenden über Hide Components

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:  Elementen ausblenden über Hide Components (9302 mal gelesen)
Estafanos
Mitglied



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

Beiträge: 27
Registriert: 17.07.2012

Catia V5 R22, Windows 7

erstellt am: 10. Jul. 2013 13:22    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 Zusammen,
ich habe ein Makro geschrieben, um in einem Part oder Product alle Elementen unter alle selektierten Geomertical Sets auszublenden.
Mein jetziges Makro selektiert Linien, Ebenen, Achsensystemen und Punkte und blendet diese aus.

Es funktioniert sehr gut, aber bei Products dauert es sehr lang, da viele Elementen zu selektieren sind.

Es gibt in CATIA eine sehr gute Funktion, wenn man ein Geometrical set selektiert und rechte Maustaste -->
Geometrical set object (Name) --> Hide Components, dann werden alle Elemente sehr schnell ausgeblendet.


Ich möchte gerne mein Makro optimieren, wie oder wo finde ich den Zugriffe auf Hide Components (Code)?


ich habe das makro aufgezeichnet, aber leider werden nur alle Geometrical sets selektiert und hört das aufzeichen auf.

hat jemand eine idee oder einen Vorschlag, wie man das Problem lösen kann?


Vielen Dank im Voraus
Mit freundlichen Grüßen
Estafanos
----------

Anbei das aufgezeichntes Makro:

Sub CATMain()

Dim partDocument1 As PartDocument
Set partDocument1 = CATIA.ActiveDocument

Dim selection1 As Selection
Set selection1 = partDocument1.Selection

selection1.Search "CATSpdSearch.OpenBodyFeature,all"

'Hide Components

.
.
.
.

End Sub

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

gladly
Mitglied



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

Beiträge: 56
Registriert: 02.11.2007

Catia V5R19SP9HF40 64Bit
Windows XP Pro x64

erstellt am: 10. Jul. 2013 15: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 Estafanos 10 Unities + Antwort hilfreich

Moin,

selektiere einfach das Geometrische Set und starte dann einfach den Hide-Components Befehl

Also (freihand -nicht getestet)

Code:

Sub CATMain()

Dim partDocument1 As PartDocument
Set partDocument1 = CATIA.ActiveDocument

Dim selection1 As Selection
Set selection1 = partDocument1.Selection

selection1.clear
selection1.add DEINBODY-OBJECT

catia.startcommand "Hide Components"

End Sub



[Diese Nachricht wurde von gladly am 10. Jul. 2013 editiert.]

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

RSchulz
Moderator²
Head of CAD, Content & Collaboration / IT-Manager



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

Beiträge: 5541
Registriert: 12.04.2007

@Work
Lenovo P510
Xeon E5-1630v4
64GB DDR4
Quadro P2000
256GB PCIe SSD
512GB SSD
SmarTeam V5-6 R2016 Sp04
CATIA V5-6 R2016 Sp05
E3.Series V2019
Altium Designer/Concord 19
Win 10 Pro x64

erstellt am: 10. Jul. 2013 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 Nur für Estafanos 10 Unities + Antwort hilfreich

Hallo,

nur als kleiner Tipp... Nicht die Suche, sondern die Selektion dauert so lange.

Ich habe ebenfalls ein Makro geschrieben, welches aber schnell durchläuft.

Code:

Sub CATMain()

    Dim actDoc 'As ProductDocument
    Dim oSel As Selection
    Dim oVisPropSet As VisPropertySet
    Dim oriCaption As String

    CATIA.Interactive = False
    Set actDoc = CATIA.ActiveDocument
    Set oSel = actDoc.Selection
    Set oVisPropSet = oSel.VisProperties

    oriCaption = CATIA.Caption

    CATIA.Caption = "Bedingungen werden ausgeblendet"
    DoEvents
    oSel.Search "(((((((CATProductSearch.MfConstraint + CATStFreeStyleSearch.MfConstraint) + CATAsmSearch.MfConstraint) + CATSketchSearch.MfConstraint) + CATDrwSearch.MfConstraint) + CATPrtSearch.MfConstraint) + CATSpdSearch.MfConstraint) & Visibility=Shown),all"
    oVisPropSet.SetShow 1
    oSel.Clear

    CATIA.Caption = "Achsensysteme werden ausgeblendet"
    DoEvents
    oSel.Search "((((CATStFreeStyleSearch.AxisSystem + CATPrtSearch.AxisSystem) + CATGmoSearch.AxisSystem) + CATSpdSearch.AxisSystem) & Visibility=Shown),all"
    oVisPropSet.SetShow 1
    oSel.Clear

    CATIA.Caption = "Ebenen werden ausgeblendet"
    DoEvents
    oSel.Search "((((CATStFreeStyleSearch.Plane + CATPrtSearch.Plane) + CATGmoSearch.Plane) + CATSpdSearch.Plane) & Visibility=Shown),all"
    oVisPropSet.SetShow 1
    oSel.Clear

    CATIA.Caption = "Skizzen werden ausgeblendet"
    DoEvents
    oSel.Search "(((CATPrtSearch.Sketch + CATGmoSearch.Sketch) + CATSpdSearch.Sketch) & Visibility=Shown),all"
    oVisPropSet.SetShow 1
    oSel.Clear

    CATIA.Caption = "Geometrische Sets werden ausgeblendet"
    DoEvents
    oSel.Search "((((CATStFreeStyleSearch.OpenBodyFeature + CATPrtSearch.OpenBodyFeature) + CATGmoSearch.OpenBodyFeature) + CATSpdSearch.OpenBodyFeature) & Visibility=Shown),all"
    oVisPropSet.SetShow 1
    oSel.Clear

    CATIA.Caption = oriCaption
    CATIA.Interactive = True

End Sub


Du solltest also eher versuchen deine Selektion möglichst klein zu halten.

------------------
MFG
Rick Schulz

Nettiquette (CAD.de)  -  Was ist die Systeminfo?  -  Wie man Fragen richtig stellt.  -  Unities

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

gladly
Mitglied



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

Beiträge: 56
Registriert: 02.11.2007

Catia V5R19SP9HF40 64Bit
Windows XP Pro x64

erstellt am: 11. Jul. 2013 09: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 Nur für Estafanos 10 Unities + Antwort hilfreich

Auch wenn etwas spät...
Falls es tatsächlich um die langsame Suche geht hilft eine Eigenschaft die ab der R19 (meine ich zumindest) erhältlich ist. Die deaktiviert die Synchronisierung der Selection des Makros mit dem Windows. Also es wird nicht alles "gehighlighted". Somit laufen Selection-Intensive (viele Selektierte Elemente) Makros um einiges Schneller.

Code:

Catia.HSOSynchronized = False

'nach dem Makro bzw. der Selection

Catia.HSOSynchronized = True


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

RSchulz
Moderator²
Head of CAD, Content & Collaboration / IT-Manager



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

Beiträge: 5541
Registriert: 12.04.2007

@Work
Lenovo P510
Xeon E5-1630v4
64GB DDR4
Quadro P2000
256GB PCIe SSD
512GB SSD
SmarTeam V5-6 R2016 Sp04
CATIA V5-6 R2016 Sp05
E3.Series V2019
Altium Designer/Concord 19
Win 10 Pro x64

erstellt am: 11. Jul. 2013 10: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 Estafanos 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von gladly:
Code:

Catia.HSOSynchronized = False

'nach dem Makro bzw. der Selection

Catia.HSOSynchronized = True



Ich kann da aktuell nur von abraten. Ich habe es selbst in einigen Makros drin gehabt und bin davon weg, da es sehr oft massive Probleme verursacht. Hierbei kann es zu CATVBA-Abstürzen bis hin zu CATIA-Fehlerverhalten kommen. Oftmals lässt es sich dann nicht mehr aktivieren oder die CATIA-Schnittstelle verweigert den Dienst. Ich habe wirklich versucht, anders zu programmieren und vermeide dementsprechende Selektionen oder versuche zumindest diese klein zu halten. In der Regel ist aber auch schon die Selektion über eine vernünftige Suche deutlich schneller, als die Selektion der Elemente nach und nach...

------------------
MFG
Rick Schulz

Nettiquette (CAD.de)  -  Was ist die Systeminfo?  -  Wie man Fragen richtig stellt.  -  Unities

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

gladly
Mitglied



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

Beiträge: 56
Registriert: 02.11.2007

Catia V5R19SP9HF40 64Bit
Windows XP Pro x64

erstellt am: 11. Jul. 2013 12:03    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 Estafanos 10 Unities + Antwort hilfreich

Nur aus reiner Neugier - welche "Art" von Problemen? Ich nutze die Funktion mittlerweile in diversen Makros ohne (merkliche?!) Probleme. Ich habe auch ein Makro, welches jedes Face eines Flächenverbundes per Suche selektiert. Ohne abschalten der Selektion konnte man der Fläche zusehen, wie sich die selektionen verbreitet hat (also ein Face nach dem anderen gehighlighted wurde). Mit deaktivierung der Sync habe ich einen Zeitgewinn von zuvor 3min auf ca. 20sek verbuchen können.

Bin über jede Info dankbar, dann werde ich das bei meinen Makros in nächster Zukunft genauer beobachten.

mfg

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

RSchulz
Moderator²
Head of CAD, Content & Collaboration / IT-Manager



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

Beiträge: 5541
Registriert: 12.04.2007

@Work
Lenovo P510
Xeon E5-1630v4
64GB DDR4
Quadro P2000
256GB PCIe SSD
512GB SSD
SmarTeam V5-6 R2016 Sp04
CATIA V5-6 R2016 Sp05
E3.Series V2019
Altium Designer/Concord 19
Win 10 Pro x64

erstellt am: 11. Jul. 2013 12: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 Estafanos 10 Unities + Antwort hilfreich

Der Zeitgewinn ist riesig, das ist mir bewusst. Daher hatte ich auch diese Eigenschaft eigentlich in jeder mit Selektion defininierten Funktion verwendet. Allerdings ist der Zugriff der API nicht sicher. Ich weis nicht warum und wann das passiert, aber es gibt Momente, bei denen diese Eigenschaft schreibgeschützt ist bzw. nicht verändert werden kann. Dann fliegt das Makro oder Modul entsprechend auf die Nase und zieht dei Schnittstelle teilweise mit nach unten, sodass auch nach beenden des Makros und neuausführen diese Eigenschaft readonly ist und nur ein Neustart von CATIA das Problem beseitigt. Das habe ich genau analysiert und bin daher mehr als sicher, dass es an dieser Eigenschaft liegt. Ich hatte das Problem auch schon durchgängig vor SP08 Hotfix06, allerdings scheint das Problem nicht dauerhaft behoben zu sein. In wieweit das in höheren SP´s behoben ist, weis ich nicht, aber die Auswirkung kann doch sehr gravierend sein.

------------------
MFG
Rick Schulz

Nettiquette (CAD.de)  -  Was ist die Systeminfo?  -  Wie man Fragen richtig stellt.  -  Unities

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

Estafanos
Mitglied



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

Beiträge: 27
Registriert: 17.07.2012

Catia V5 R22, Windows 7

erstellt am: 17. Jul. 2013 12:43    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 gladly, hallo Zusammen,
vielen herzlichen Dank für die sehr guten Informationen. leider konnte ich heute die Vorschläge erst testen, da ich mit anderen Makros gearbeitet habe.

Code:
catia.startcommand "Hide Components"

hat sehr gut funktioniert  . Ich glaube, dass es von der CATIA-Sprache abhängig. Man kann hier für die unterschiedlichen Sprachen so eine Unterroutine für die Spracherkennung reinbauen und mit eine If .. Else schleife z. B. für deutsch "catia.startcommand "Komponenten verdecken"" abfangen.

Es läuft recht schnell, mehr als ich erhofft habe.
Dieser Befehl läuft nur in „*.CATPart“ und nicht bei den Baugruppen „*.CATProduct“ .

Ich habe diese Routine mit einer Selektion (Alle Geometrical Sets) unter CATVBA untersucht, und beim Add Watch... kommt die Selektion richtig an, aber "Hide Components" wird nicht ausgeführt.

Code:
Sub CATMain()
Dim oProdukt
Set oProdukt = CATIA.ActiveDocument
Dim oSel As Selection
Set oSel = oProdukt.Selection
oSel.Search "(((CATStFreeStyleSearch.OpenBodyFeature + CATPrtSearch.OpenBodyFeature) + CATGmoSearch.OpenBodyFeature) + CATSpdSearch.OpenBodyFeature),all"
CATIA.StartCommand "Hide Components"
oSel.Clear
End Sub

Warum funktioniert das mit dem „Hide Components“ unter eine Bauguppe nicht?

hat jemand eine Idee oder einen Vorschlag, wie man „Hide Components“  unter *.CATProduct ausführen kann?

Vielen Dank im Voraus
Mit freundlichen Grüßen
Estafanos

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

RSchulz
Moderator²
Head of CAD, Content & Collaboration / IT-Manager



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

Beiträge: 5541
Registriert: 12.04.2007

@Work
Lenovo P510
Xeon E5-1630v4
64GB DDR4
Quadro P2000
256GB PCIe SSD
512GB SSD
SmarTeam V5-6 R2016 Sp04
CATIA V5-6 R2016 Sp05
E3.Series V2019
Altium Designer/Concord 19
Win 10 Pro x64

erstellt am: 17. Jul. 2013 13:11    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 Estafanos 10 Unities + Antwort hilfreich

Hat sich eigentlich irgendwer mal meinen Code angeschaut...

Startcommand ist immer schlecht, wenn du es vermeiden kannst, da es von der Sprache abhängig ist und frei definierbar.

Wenn du so oder so eine Selection hast, kannst du auch "VisProperties" davon verwenden.

Code:
   
Sub CATMain()

  Dim oProdukt
  Dim oSel As Selection
  Dim oVisPropSet As VisPropertySet

  Set oProdukt = CATIA.ActiveDocument
  Set oSel = oProdukt.Selection
  oSel.Clear
  Set oVisPropSet = oSel.VisProperties

  oSel.Search "(((CATStFreeStyleSearch.OpenBodyFeature + CATPrtSearch.OpenBodyFeature) + CATGmoSearch.OpenBodyFeature) + CATSpdSearch.OpenBodyFeature),all"
  oVisPropSet.SetShow 1
  oSel.Clear

End Sub


Ich frage mich zwischenzeitlich echt, warum ich hier überhaupt was schreibe...

------------------
MFG
Rick Schulz

Nettiquette (CAD.de)  -  Was ist die Systeminfo?  -  Wie man Fragen richtig stellt.  -  Unities

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

Estafanos
Mitglied



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

Beiträge: 27
Registriert: 17.07.2012

Catia V5 R22, Windows 7

erstellt am: 17. Jul. 2013 13:49    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 Herr Schulz,
vielen vielen Dank für das Skript. In Unserer Firma arbeiten die Konstrukteure mit vielen vielen Elementen. Fahrzeuge, Getriebe und Motorenkomponenten. In meinem alten Skript habe ich genau so über eine Selektion programmiert. Leider gibt es in einigen Baugruppen bis zu 50.000 Elementen auszublenden. Wenn ich die ganzen Elementen über eine Selektion mache, dann dauert die Ausführungszeit etwa 3-4 min.. Ich glaube, dass es nicht zumutbar für die Anwender ist.

Den riesigen Vorteil von ihnen, dass die Selektion so klein wie möglich zu machen, habe ich vorher nicht gewusst. Deswegen habe ich meinen Selektionsstring unterteilt und es läuft schneller.
Die Anwender möchten gerne, dass alle Elemente unter allen Geometical Sets ausgeblendet werden. Sie möchten nicht, dass die Geometical sets selbst ausgeblendet werden.

Ich habe es mir so vorgestellt, dass über den Befehl "Hide Components" gehen könnte. Der einzige Vorteil von diesem Befehl ist, dass es CAA programmiert wurde (Dassault Systemes) und läuft recht schnell.

Ich gebe Ihnen vollkommen Recht, dass "Hide Components"-Befehl von der Sprache abhängig ist. Ich kann bei uns in der Firma sagen, dass alle Makros nur für z.B. Englisch und Deutsch auszuführen sind.

Kann man diesen Befehl irgendwie in eine Baugruppe ausführen?

Herzlichen Dank im Voraus

Mit freundlichen grüßen
Estafanos

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

RSchulz
Moderator²
Head of CAD, Content & Collaboration / IT-Manager



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

Beiträge: 5541
Registriert: 12.04.2007

@Work
Lenovo P510
Xeon E5-1630v4
64GB DDR4
Quadro P2000
256GB PCIe SSD
512GB SSD
SmarTeam V5-6 R2016 Sp04
CATIA V5-6 R2016 Sp05
E3.Series V2019
Altium Designer/Concord 19
Win 10 Pro x64

erstellt am: 17. Jul. 2013 13:58    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 Estafanos 10 Unities + Antwort hilfreich

Ich habe genau deine Selektion über die Suche genommen. Daher dürfte der Code kaum langsamer sein und die VisProps sind nur eine Eigenschaft der Rest läuft dann ebenfalls über CAA bzw. eben die API, die auch im CAA programmiert ist. Hast du es denn mal ausprobiert?

------------------
MFG
Rick Schulz

Nettiquette (CAD.de)  -  Was ist die Systeminfo?  -  Wie man Fragen richtig stellt.  -  Unities

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

Estafanos
Mitglied



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

Beiträge: 27
Registriert: 17.07.2012

Catia V5 R22, Windows 7

erstellt am: 17. Jul. 2013 14:32    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

Ich möchte gerne alle Ebenen, Linien, Punkte, Achsensystemen, Kurven und Baugruppen-Bedingungen. in den Baugruppen ausblenden.
Bei einer kleinen Baugruppe funktioniert mit Selektionen recht gut und schnell.

Da wir sehr großen Baugruppen und keinen Hyprid konstruktion haben, denke ich, dass alle Ebenen, Linien und Punkten in den Geometical Sets sich befinden.

Ich habe die o. g. Elementen über mehrere Selektionen, wie in deinem Skript, gemacht und habe eine Zeitfunktion geschrieben:
Am Anfang des Skriptes
Uhrzeit1 = Time
.
.
.
Am Ende des Skriptes
Uhrzeit2 = Time
A = DateDiff("s", Uhrzeit1, Uhrzeit2)
MsgBox A


Dann dauert die Selektion 3,3 min. Es liegt darin, dass es viele (50.000) Elementen zu selektieren sind.
Herzlichen Dank im Voraus

Mit freundlichen grüßen
Estafanos

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 17. Jul. 2013 14: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 Nur für Estafanos 10 Unities + Antwort hilfreich

Servus
Und was dauert nun lange? Das suchen/selektieren oder das ausblenden?
IMHO beansprucht das suche die meiste Zeit.
Macht es einen unterschied ob du in die Baugruppe eingezoomt hast bei ausführen des Makros?

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

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

Estafanos
Mitglied



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

Beiträge: 27
Registriert: 17.07.2012

Catia V5 R22, Windows 7

erstellt am: 17. Jul. 2013 15:15    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

Die gesamte Ausführungszeit vom Skript dauert sehr lange. Bei Ausführen habe ich keine Möglichkeit einzuzoomen oder irgendwas zu machen.

Ich habe das Skript Herrn Schulz nach meinen Bedürfnisse geändert (Siehe Unten).
Gibt es Möglichkeiten, um das skript zeitlich zu beschleunigen?
Wie gesagt, es gibt in einigen baugruppen bis zu 50.000 Elementen.


'Code
Sub CATMain()


Uhrzeit1 = Time

    Dim actDoc 'As ProductDocument
    Dim oSel As Selection
    Dim oVisPropSet As VisPropertySet
    Dim oriCaption As String

    CATIA.Interactive = False
    Set actDoc = CATIA.ActiveDocument
    Set oSel = actDoc.Selection
    Set oVisPropSet = oSel.VisProperties

    oriCaption = CATIA.Caption

    CATIA.Caption = "Bedingungen werden ausgeblendet"
    DoEvents
    oSel.Search "(((((((CATProductSearch.MfConstraint + CATStFreeStyleSearch.MfConstraint) + CATAsmSearch.MfConstraint) + CATSketchSearch.MfConstraint) + CATDrwSearch.MfConstraint) + CATPrtSearch.MfConstraint) + CATSpdSearch.MfConstraint) & Visibility=Shown),all"
    oVisPropSet.SetShow 1
    oSel.Clear

    CATIA.Caption = "Achsensysteme werden ausgeblendet"
    DoEvents
    oSel.Search "((((CATStFreeStyleSearch.AxisSystem + CATPrtSearch.AxisSystem) + CATGmoSearch.AxisSystem) + CATSpdSearch.AxisSystem) & Visibility=Shown),all"
    oVisPropSet.SetShow 1
    oSel.Clear

    CATIA.Caption = "Ebenen werden ausgeblendet"
    DoEvents
    oSel.Search "((((CATStFreeStyleSearch.Plane + CATPrtSearch.Plane) + CATGmoSearch.Plane) + CATSpdSearch.Plane) & Visibility=Shown),all"
    oVisPropSet.SetShow 1
    oSel.Clear

    CATIA.Caption = "Skizzen werden ausgeblendet"
    DoEvents
    oSel.Search "(((CATPrtSearch.Sketch + CATGmoSearch.Sketch) + CATSpdSearch.Sketch) & Visibility=Shown),all"
    oVisPropSet.SetShow 1
    oSel.Clear

    CATIA.Caption = "Punkte werden ausgeblendet"
    DoEvents
    oSel.Search "((((CATStFreeStyleSearch.Point  + CATPrtSearch.Point) + CATGmoSearch.Point) + CATSpdSearch.Point) & Visibility=Shown),all"
    oVisPropSet.SetShow 1
    oSel.Clear

    CATIA.Caption = "Kurven werden ausgeblendet"
    DoEvents
    oSel.Search "((((CATStFreeStyleSearch.Curve  + CATPrtSearch.Curve) + CATGmoSearch.Curve) + CATSpdSearch.Curve) & Visibility=Shown),all"
    oVisPropSet.SetShow 1
    oSel.Clear

    CATIA.Caption = "Linien werden ausgeblendet"
    DoEvents
    oSel.Search "((((CATStFreeStyleSearch.Line  + CATPrtSearch.Line) + CATGmoSearch.Line) + CATSpdSearch.Line) & Visibility=Shown),all"
    oVisPropSet.SetShow 1
    oSel.Clear


    CATIA.Caption = oriCaption
    CATIA.Interactive = True
   
    Uhrzeit2 = Time

    A = DateDiff("s", Uhrzeit1, Uhrzeit2)
   
    MsgBox A
   
End Sub

Danke und Gruß
Estafanos

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

RSchulz
Moderator²
Head of CAD, Content & Collaboration / IT-Manager



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

Beiträge: 5541
Registriert: 12.04.2007

@Work
Lenovo P510
Xeon E5-1630v4
64GB DDR4
Quadro P2000
256GB PCIe SSD
512GB SSD
SmarTeam V5-6 R2016 Sp04
CATIA V5-6 R2016 Sp05
E3.Series V2019
Altium Designer/Concord 19
Win 10 Pro x64

erstellt am: 17. Jul. 2013 15: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 Estafanos 10 Unities + Antwort hilfreich

Im Übrigens wäre das ein gute Ansatz, denn warum ist die Selektion so Zeitaufwendig? Weil die Selektion dargestellt wird. Diese Bildberechnung kostet zeit und kann mit HSOSynchronized = false deaktiviert werden birgt aber die von mir erwähnten Bugs.

Ein weiterer Ansatz könnte es sein, CATIA unsichtbar zu schalten mit "CATIA.Visible = False" und nach der Bearbeitung wieder auf True zu setzen. Ob das etwas bringt weis ich allerdings nicht. Nur verstehe ich dann anscheinend immer noch nicht, wie du es machst. Der Beispielcode arbeitet auch immer mit einer Selection bzw. eine Sel.Search-Funktion, die ebenfalls eine Selection zur Folge hat. In meinem Beispiel is es genau die gleiche Funktion, nur das ich nicht per StartCommand, sondern per Visproperties arbeite. Daher ist mir aktuell unklar, wie deins schneller sein kann. BTW Wir arbeiten auch mit Baugruppen die zig tausend Obejekte beinhalten, also du redest hier nicht unbedingt mit einem, der nicht weis, wovon du redest. Ich weis daher nicht, warum der von mir dargelegte Code langsam sein sollte bzw. welcher Code bei dir schneller ist. Ich würde mich freuen, wenn du mir den schnelleren Code zeigen könntest.

Im Übrigen wirst du bei sehr großen Datenmengen immer mit dementsprechend großer Verarbeitungszeit rechnen müssen. Du kannst zwar immer optimieren, aber z.B. Latebinding ist da nicht unbedingt sinnvoll und schon garnicht in Schleifen immer neu binden etc.. Wie auch immer, finde ich deinen Ansatz irgendwie nicht zielführend und deine Ansprüche leicht an der Realität vorbei geschossen. Außerdem habe ich noch keinen sinnvollen Code von dir gesehen, zu dem ich explizit etwas sagen könnte. Nur eine Aufgabenstellung und ein Startcommand fürs Produkt der im Übrigen "Verdecken/Anzeigen" lautet, dürfte die Sache kaum schneller machen, da du dafür trotzdem selektieren und / oder suchen musst.

Ergänzung: Habe deine Antwort gelesen. Der Code ist so schon derbe optimiert. Mehr geht mit VBA-Mitteln eigentlich garnicht. Reinzoomen und CATIA-Fenster ausblenden bzw. minimieren geht aber alles per Code. Würde ich nur nicht machen, da das Probleme mit Windows und dem Treiber etc. der gesamten Verarbeitung geben kann. Wenn man dies tut, sollte man dem System zumindest durch z.b. "DoEvents" auch die Mittel und Möglichkeiten geben, diese Aktionen auszuführen, da diese im gleichen Thread abgehandelt werden.

------------------
MFG
Rick Schulz

Nettiquette (CAD.de)  -  Was ist die Systeminfo?  -  Wie man Fragen richtig stellt.  -  Unities

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

Estafanos
Mitglied



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

Beiträge: 27
Registriert: 17.07.2012

Catia V5 R22, Windows 7

erstellt am: 17. Jul. 2013 15:41    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

wenn ein Part mit 30.000 Elementen dauert die Ausführungszeit nur 3 Sec.
aber leider weiß ich nicht, wie man das Skript unter einer Baugruppe funktionsfähig machen kann?

Du kannst gerne für einen Part mit vielen Elementen ausprobieren. dann wirst du feststellen, dass es wissentlich schneller ist. Ich kann leider nicht sagen, an was  das liegt.

Diese Selektion betrifft nur die Geometrical sets, die sind bei mir nur 5 Geometical sets. Danach wird "Hide Components" ausgeführt.

Bitte nach dem Ausprobieren Bescheid geben, ob es bei dir so schnell läuft? oder liegt das vielleicht an der Installation von Catia (bei Uns)?

 
Mein Code lautet:


Sub CATMain()
Uhrzeit1 = Time
Dim oProdukt
Set oProdukt = CATIA.ActiveDocument
Dim oSel As Selection
Set oSel = oProdukt.Selection
oSel.Search "(((CATStFreeStyleSearch.OpenBodyFeature + CATPrtSearch.OpenBodyFeature) + CATGmoSearch.OpenBodyFeature) + CATSpdSearch.OpenBodyFeature),all"


CATIA.StartCommand "Hide Components"
oSel.Clear
Uhrzeit2 = Time
A = DateDiff("s", Uhrzeit1, Uhrzeit2)
MsgBox A
End Sub

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

RSchulz
Moderator²
Head of CAD, Content & Collaboration / IT-Manager



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

Beiträge: 5541
Registriert: 12.04.2007

@Work
Lenovo P510
Xeon E5-1630v4
64GB DDR4
Quadro P2000
256GB PCIe SSD
512GB SSD
SmarTeam V5-6 R2016 Sp04
CATIA V5-6 R2016 Sp05
E3.Series V2019
Altium Designer/Concord 19
Win 10 Pro x64

erstellt am: 17. Jul. 2013 16: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 Estafanos 10 Unities + Antwort hilfreich

Ja ist schnell...

...und mein Beispiel...

Code:
Sub CATMain()

  Uhrzeit1 = Time
  Dim oProdukt
  Dim oVisPropSet As VisPropertySet
  Dim oSel As Selection

  Set oProdukt = CATIA.ActiveDocument
  Set oSel = oProdukt.Selection
  Set oVisPropSet = oSel.VisProperties


  oSel.Search "(((CATStFreeStyleSearch.OpenBodyFeature + CATPrtSearch.OpenBodyFeature) + CATGmoSearch.OpenBodyFeature) + CATSpdSearch.OpenBodyFeature),all"
  oVisPropSet.SetShow 1
  oSel.Clear

  Uhrzeit2 = Time
  A = DateDiff("s", Uhrzeit1, Uhrzeit2)
  MsgBox A
 
End Sub


... ist schneller bzw. gleichschnell.

Wo wir wieder bei dem Thema währen. Ich glaube wir reden etwas aneinander vorbei. Die Suche ist dein Problem. Die in meinem Beispiel definierten Suchen definieren exakt die Sachen, die immer ausgeblendet werden sollen. Darunter sind Part- und auch Produkt-elemente. Diese musst du deinen Wünschen anpassen. Allerdings geht es dann auch schon kaum noch schneller. Der Rest ist tatsächliche Berechnung vom System, welches ebenfalls alle Objekte innerhalb der Produktstruktur durchgehen muss. Dabei werden verschiedenste Objekte und Typen definiert und darauf verwiesen. Das bedeutet deutlich mehr Aufwand, als im Part alleine. Du suchst in deinem Fall nach offenen Körpern. Dies sollte alleine auch nicht lange dauern im Produkt. Mein oben genannter Code sucht aber nach deutlich mehr. Ebenen, Achsen, Coordsystemen, geo. Elementen, Bedingungen usw.... das ist eine ganz andere Hausnummer! Was du allerdings noch machst, ist alle zu suchen. Ich habe extra nur die gesucht, die sichtbar sind. Dadurch wird deutlich weniger selektiert...

Versuch es mal mit folgendem Code:

Code:

Sub CATMain()

  Uhrzeit1 = Time
  Dim oProdukt
  Dim oVisPropSet As VisPropertySet
  Dim oSel As Selection

  Set oProdukt = CATIA.ActiveDocument
  Set oSel = oProdukt.Selection
  Set oVisPropSet = oSel.VisProperties

  oSel.Search "((((CATStFreeStyleSearch.OpenBodyFeature + CATPrtSearch.OpenBodyFeature) + CATGmoSearch.OpenBodyFeature) + CATSpdSearch.OpenBodyFeature) & Visibility=Shown),all"
  oVisPropSet.SetShow 1
  oSel.Clear

  Uhrzeit2 = Time
  A = DateDiff("s", Uhrzeit1, Uhrzeit2)
  MsgBox A
 
End Sub


------------------
MFG
Rick Schulz

Nettiquette (CAD.de)  -  Was ist die Systeminfo?  -  Wie man Fragen richtig stellt.  -  Unities

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

Estafanos
Mitglied



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

Beiträge: 27
Registriert: 17.07.2012

Catia V5 R22, Windows 7

erstellt am: 17. Jul. 2013 16:58    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


GeoSet_selbst_ausblenden.png


Elemente_ausbelnden.png

 
Ich glaube, dass wir von unterschiedlichen Sachen reden.

ich möchte alle Elementen unter alle Geometrical Sets ausblenden und nicht die Geometrical Sets selbst.

Ich weiss, dass das Ergbnis auf den ersten Blick gleich aussieht.
Es ist für die Konstrukteure von sehr hilfreich, wenn nur die Elemente ausgeblendet werden, dann bei Parents/Childern suche (Vor allem bei sehr verschalteten Geo sets), dann erreicht der Konstrukteur ganz schnell was er sucht.

z. B. eine Skizze ist auf eine Ebene konstruiert wurde. Wenn der Konstrukteur „Parents/Childern“ von der Skizze sucht, dann kommt die in dem Fenster „Parents and Childern“ die Ebene. Die Ebene in deinem Fall (Skript) ist eingeblendet. Bei verschachtelten Geo Set ist sehr mühsam zuerst die richtige Geo Set einzublenden. Und wenn der Konstrukteur das richtige Geo set gefunden hat und einblendet, dann werden alle Elemente eingeblendet.

Ich hoffe, meine Ausführungen die Unterschiede klarer gestellt haben.

Hier dafür 2 Bilder von den Ergebnissen.
Was ich gerne wissen möchte, kann man die "CATIA.StartCommand "Hide Components" für die Baugruppe funktionsfähig machen?

Vielen Dank im Voraus
Mit freundlichen Grüßen
Estafanos

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

RSchulz
Moderator²
Head of CAD, Content & Collaboration / IT-Manager



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

Beiträge: 5541
Registriert: 12.04.2007

@Work
Lenovo P510
Xeon E5-1630v4
64GB DDR4
Quadro P2000
256GB PCIe SSD
512GB SSD
SmarTeam V5-6 R2016 Sp04
CATIA V5-6 R2016 Sp05
E3.Series V2019
Altium Designer/Concord 19
Win 10 Pro x64

erstellt am: 17. Jul. 2013 17: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 Nur für Estafanos 10 Unities + Antwort hilfreich

Dann verstehe ich dein Problem  Du musst im Endeffekt alles auf Partebene machen. Sprich du musst die gesamte Baugruppenstruktur durchgehen jedes einzelene Part aktivieren, darin suchen und per Startcommand die Dinge ausblenden. Denn die in "Hide Components" enthaltene Funktion geht dann über alle Elemente und blendet diese einzeln aus. Das macht die im Produktdesign aber nicht und das dürfte nur mit der Selektion auf Partebene funktionieren.

Wenn du die Elemente einzeln ausblenden möchtest, muss du diese natürlich auch gezielt selektieren und ausblenden, was wiederum aber nicht über das GeoSet funktioniert.

------------------
MFG
Rick Schulz

Nettiquette (CAD.de)  -  Was ist die Systeminfo?  -  Wie man Fragen richtig stellt.  -  Unities

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

Estafanos
Mitglied



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

Beiträge: 27
Registriert: 17.07.2012

Catia V5 R22, Windows 7

erstellt am: 19. Jul. 2013 10: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

vielen Dank für die Hinweise. Schade, dass "Hide Components" unter einer baugruppe nicht funktioniert.

Mit freundlichen Grüßen
Estafanos

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

RSchulz
Moderator²
Head of CAD, Content & Collaboration / IT-Manager



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

Beiträge: 5541
Registriert: 12.04.2007

@Work
Lenovo P510
Xeon E5-1630v4
64GB DDR4
Quadro P2000
256GB PCIe SSD
512GB SSD
SmarTeam V5-6 R2016 Sp04
CATIA V5-6 R2016 Sp05
E3.Series V2019
Altium Designer/Concord 19
Win 10 Pro x64

erstellt am: 19. Jul. 2013 11:39    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 Estafanos 10 Unities + Antwort hilfreich

Hallo Estefanos,

trotzdem steht dem absolut nichts im Weg, denn die einzelnen Parts abzuwandern ist eigentlich kein Problem...

------------------
MFG
Rick Schulz

Nettiquette (CAD.de)  -  Was ist die Systeminfo?  -  Wie man Fragen richtig stellt.  -  Unities

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