| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: FDO-Layer mit vb.net schalten (875 / mal gelesen)
|
tappenbeck Mitglied Vermessungsingenieur
Beiträge: 1213 Registriert: 30.05.2002 AutoCAD (Map)2019, Topobase, MapEdit, Lisp, .vb.net
|
erstellt am: 03. Mai. 2016 14:26 <-- editieren / zitieren --> Unities abgeben:
Moin ! ich brauche einige Funktionen um auf die FDO-Layersteuerung von Map (TB2015) zugreifen zu können. Mein Code sieht bisher so aus: Code: Private Sub EBL_FDO_OnOff_Work(ByVal NewVisibleStatus As Boolean) Dim CurrentMap As Autodesk.Gis.Map.Platform.AcMapMap Dim Layers As OSGeo.MapGuide.MgLayerCollection = Nothing Dim Layer As OSGeo.MapGuide.MgLayerBase CurrentMap = Autodesk.Gis.Map.Platform.AcMapMap.GetCurrentMap()
Dim LayerStatus As String = "" Dim LayerName As String = "" Try Layers = CurrentMap.GetLayers() For Each current In Layers LayerName = current.GetName() current.SetSelectable(NewVisibleStatus) Next Catch ex As Exception Dim TryReport As New EBL.Service.TryCatchReport TryReport.Show("unerwarteter Fehler in EBL.Layer > cls_LayerOnOff > EBL_FDO_OnOff_Work", ex.ToString) End Try End Sub
Aber da ist nichts mit ein- und ausschalten in Abhängigkeit des Parameters NewVisibleStatus! Kann mir einer von Euch weiterhelfen ? Gruß Jan ------------------ jan :-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stelli1 Moderator Verm.-Ing.
Beiträge: 1521 Registriert: 17.08.2005 AutoCAD Map aktuell, Designsuite VS6, VS.net
|
erstellt am: 03. Mai. 2016 18:53 <-- editieren / zitieren --> Unities abgeben: Nur für tappenbeck
Hallo Jan, In deinem Beispiel schaltest du für alle Layer die Wählbarkeit (SetSelectable) an oder aus. Wie ist deine Variable CURRENT deklariert. Bei mir ist das LAYER. Folgender Code schaltet einen Layer an/aus:
Code: Dim layers As OSGeo.MapGuide.MgLayerCollection Dim Layer As OSGeo.MapGuide.MgLayerBase Dim currentMap As Autodesk.Gis.Map.Platform.AcMapMap currentMap = Autodesk.Gis.Map.Platform.AcMapMap.GetCurrentMap() layers = currentMap.GetLayers() If layers.Contains("TOPO_STADTTEILGRENZE") Then Layer = layers.GetItem("TOPO_STADTTEILGRENZE") Layer.Visible = Layer.Visible Xor True End If
Wilfried Stelberg ------------------ Warum lisp'eln wenn's auch anders geht. www.ib-stelberg.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stelli1 Moderator Verm.-Ing.
Beiträge: 1521 Registriert: 17.08.2005 AutoCAD Map aktuell, Designsuite VS6, VS.net
|
erstellt am: 03. Mai. 2016 19:03 <-- editieren / zitieren --> Unities abgeben: Nur für tappenbeck
Hallo Jan, noch nachgereicht für Gruppen an/aus. Hierbei werden im Map auch die untergeordneten Layer an/aus geschaltet.
Code: Dim Groups As OSGeo.MapGuide.MgLayerGroupCollection Groups = currentMap.GetLayerGroups If Groups.Contains("Topo - Vermessung") Then Groups.GetItem("Topo - Vermessung").Visible = Groups.GetItem("Topo - Vermessung").Visible Xor True End If
Wilfried Stelberg ------------------ Warum lisp'eln wenn's auch anders geht. www.ib-stelberg.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ingenieur Studio HOLLAUS Mitglied CAD / CAFM / GIS Beratung-Programmierung-Schulung
Beiträge: 1049 Registriert: 06.11.2008 Autocad 2 bis Autocad 2020 (+Map3D, +Civil3D, +Infraworks) RKV .... CAFM+mehr HMap ... Vermessung und Verkehr OoC .... Raumplanung CBox ... Tools für AutoCAD und BricsCAD (kostenfrei)
|
erstellt am: 03. Mai. 2016 19:13 <-- editieren / zitieren --> Unities abgeben: Nur für tappenbeck
|
tappenbeck Mitglied Vermessungsingenieur
Beiträge: 1213 Registriert: 30.05.2002 AutoCAD (Map)2019, Topobase, MapEdit, Lisp, .vb.net
|
erstellt am: 04. Mai. 2016 08:48 <-- editieren / zitieren --> Unities abgeben:
|
Stelli1 Moderator Verm.-Ing.
Beiträge: 1521 Registriert: 17.08.2005 AutoCAD Map aktuell, Designsuite VS6, VS.net
|
erstellt am: 04. Mai. 2016 14:40 <-- editieren / zitieren --> Unities abgeben: Nur für tappenbeck
Hier mal der komplette Code: Code: <Autodesk.AutoCAD.Runtime.CommandMethodAttribute("VISStadtteil")> _ Public Shared Sub Visible_Stadtteil() Dim layers As OSGeo.MapGuide.MgLayerCollection Dim Layer As OSGeo.MapGuide.MgLayerBase Dim currentMap As Autodesk.Gis.Map.Platform.AcMapMap currentMap = Autodesk.Gis.Map.Platform.AcMapMap.GetCurrentMap() layers = currentMap.GetLayers() If layers.Contains("TOPO_STADTTEILGRENZE") Then Layer = layers.GetItem("TOPO_STADTTEILGRENZE") ' XOR True schaltet von an nach aus und von aus nach an Layer.Visible = Layer.Visible Xor True End If End Sub
Es darf kein transparenter AutoCAD Befehl sein! Wilfried Stelberg ------------------ Warum lisp'eln wenn's auch anders geht. www.ib-stelberg.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |