Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Solid Edge
  Draft: Layer (automatisiert) ein-/ausblenden

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 SolidEdge
Autor Thema:  Draft: Layer (automatisiert) ein-/ausblenden (2580 mal gelesen)
simsalabim
Mitglied
Fensterbauer


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

Beiträge: 119
Registriert: 08.10.2004

Windows 7 Prof
Solid Edge ST4 (SP8) x64 bzw. auf NB: Solid Edge ST5 (SP4)
MS Excel 2010
Intel(R) Xeon(R) CPU E5506
2,13 GHz, 6GB
Quadro FX 3800

erstellt am: 29. Apr. 2013 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

Hallo allerseits!
muss einen 2D-Konfigurator im SE erstellen (nur 2D-Darstellung).
Möchte dazu Bauteile, welche ich alternativ darstelle, auf unterschiedliche Layer legen, die automatisch bspw. vom Excel aus ein- und ausgeblendet werden sollen. Einen großen Teil der Darstellung steurere ich über Verknüpfung von Zellwerten aus dem Excel heraus (bspw. Glasstärken, und Positionen bzw. Größen von Bauteilen).
Einen Teil dessen aber wollte ich einfach über Ein- und Ausblenden verschiedener Layer steuern. Wenn bspw. der Benutzer ein Kunststofffenster auswählt, sollten die Kunststoff-spezifischen Layer eingeblendet, und alle Holzspezifischen Layer ausgeblendet werden.
Das wird nur funktionieren, wenn ich dem Benutzer ein manuelles ein- u. Ausblenden von Layern ersparen kann. Es sollte sich also auf die Benutzereingabe beschränken "Kunststofffenster" oder "Holzfenster" oder "Holz-Alu...." usw. (tatsächlich steckt da natürlich noch wesentlich mehr dahinter).
Muss ich dazu programmieren? Womit könnte ich programmieren? Im Excel hab ich mit VBA schon gearbeitet, da möchte ich natürlich nichts völlig neues lernen.
Ob mir jemand ein Beispiel-Code geben könnte, wie ich einen Layer in Solid Edge ein- oder ausblende?
Was für ein Programm müssten mir meine Admins installieren? (möglichst eines, wo ich nicht zur Geschäftsführung gehen und um Geld ansuchen müsste... ;-)
Sehr dankbar für jede Hilfe!
Thomas

[Diese Nachricht wurde von simsalabim am 29. Apr. 2013 editiert.]

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

Markus Gras
Moderator
Solid Edge AE


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

Beiträge: 4602
Registriert: 20.07.2000

Kritik muß sachlich falsch und persönlich verletzend sein, damit sie wirkt.

erstellt am: 29. Apr. 2013 18:24    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 simsalabim 10 Unities + Antwort hilfreich

Hallo Thomas,

VBA ist hier sicher das richtige Werkzeug, schau mal ob Dir das hilft:

'Wir holen uns SE und das Aktive Dokument
    Set objSEApp = GetObject(, "SolidEdge.Application")
    Set objActDoc = objSEApp.ActiveDocument
   
    If objActDoc.Type = igDraftDocument Then
        'Es ist eine Zeichnung
        Set objDraftDoc = objActDoc
        'Set objActSheet = objDraftDoc.ActiveSheet
        On Error Resume Next
        Set objInitActSheet = objDraftDoc.ActiveSheet
        For Each objActSheet In objDraftDoc.Sheets
            blSheetVis = objActSheet.Visible
            objActSheet.Activate    'Jetzt machen wir es auch zum aktiven
            Set objLayers = objActSheet.Layers
            'Den aktuellen Layerstatus sichern
            intNumLayers = 0
            ReDim blLayVis(objLayers.Count) 'Das Array auf die aktuelle Layeranzahl setzen und leeren
            For Each objLayer In objLayers
                blLayVis(intNumLayers) = objLayer.Show
                intNumLayers = intNumLayers + 1
                objLayer.Show = False
            Next objLayer
            Set objSelSet = objDraftDoc.SelectSet
            For Each objLayer In objLayers
                blLayerVis = objLayer.Show  'Wir merken uns ob der Layer sichtbar ist für später.
                objLayer.Show = True
                Call objSelSet.AddAll
                'Jetzt haben wir alles auf dem aktiven Blatt und dem aktiven Layer

---------------> Hier passiert dann irgendwas
               
               Call objSelSet.RemoveAll
                objLayer.Show = blLayerVis  'Alten Zustand wieder herstellen
            Next objLayer
----->      'Die Layeranzeige wieder herstellen
            intNumLayers = 0
            For Each objLayer In objLayers
----->          objLayer.Show = blLayVis(intNumLayers)
                intNumLayers = intNumLayers + 1
            Next objLayer
            objActSheet.Visible = False ' blSheetVis
           
        Next objActSheet
        objInitActSheet.Activate
        With objSEApp.ActiveWindow
            .DisplayBackgroundSheetTabs = False
            .Display2DModelSheetTab = False
        End With
       
    Else
        'Es ist keine Zeichnung
        MsgBox "Kein Draft Dokument aktiv", vbOKOnly, "Layerinhalte auflisten"
   
    End If


Als Verweise mußt Du natürlich diverse Solid Edge TLBs einbinden.

------------------
Gruß
Markus Gras
Unitec Informationssysteme GmbH

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

simsalabim
Mitglied
Fensterbauer


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

Beiträge: 119
Registriert: 08.10.2004

Windows 7 Prof
Solid Edge ST4 (SP8) x64 bzw. auf NB: Solid Edge ST5 (SP4)
MS Excel 2010
Intel(R) Xeon(R) CPU E5506
2,13 GHz, 6GB
Quadro FX 3800

erstellt am: 30. Apr. 2013 11:40    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

Danke!!!
und: phhuhhh, jetzt sagt er mir dass kei Objekt aktiv wäre (hab's SE aber offen, inkl. einer geöffneten Draft-Datei....)

Hm, tja, und was könnte das wohl heissen? So fit bin ich wohl doch noch nicht ;-)

Zitat:
Als Verweise mußt Du natürlich diverse Solid Edge TLBs einbinden.

Aber immerhin: ich kann aus Excel und dem mir bereits etwas vertrauten VBA-Editor mal auch im SE arbeiten. Der Anfang ist also gemacht, super. Es wird aber etwas zach, die Beispiele, dich ich in der SE-Hilfe gefunden haben, waren VB.NET-Beispiele und tun hier nicht (jedenfalls nicht auf Anhieb)... Es hat nicht vielleicht jemand einen Tipp, wo ich VBA-Beispiel-Code finden könnte? ODer eine Beschreibung dieser Methoden etc.?

Danke! Thomas

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