| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
 | PNY: der unverzichtbare Partner für umfassende KI-Lösungen von Workstations bis zu Edge Computing und KI-Cluster-Bereitstellung, eine Pressemitteilung
|
Autor
|
Thema: Reihenfolge von Layern (1190 mal gelesen)
|
Stelli1 Ehrenmitglied Verm.-Ing.
    
 Beiträge: 1526 Registriert: 17.08.2005 Map 2000-2014, Rasterdesign MapGuide autodesk Topobase 2-2014 VS6, VS.net 2010
|
erstellt am: 24. Feb. 2014 11:47 <-- editieren / zitieren --> Unities abgeben:         
Hallo zusammen, ich habe eine Frage zur Map API. Ich möchte einen Map Layer zur "Darstellungsverwaltung" hinzufügen und diesen an eine bestimmte Position bringen. Hierzu habe ich eine Funktion die zwar den (Map)Layer nach unten schiebt aber leider nicht die Anzeigereihenfolge ändert. Was muss ich machen um die Anzeigereihenfolge zu ändern.
Code: Public Function MoveLayerDown(ByVal elementName As String, Optional ByVal LayerID As ObjectId = Nothing) As Boolean Dim isMoved As Boolean = False ' Get the Object Id for the current Map Dim currentMapId As ObjectId If Not FindCurrentMapId(currentMapId) Then Return isMoved End If ' Find the object Id of the element to be moved Dim elementIdTobeMoved As ObjectId If IsNothing(LayerID) Then ' Suche nach dem Namen If Not FindElementId(elementIdTobeMoved, elementName) Then Return isMoved End If Else elementIdTobeMoved = LayerID isMoved = True End If Dim trans As Transaction = Nothing Try trans = Utility.TransactionManager.StartTransaction() Dim currentMap As Map = trans.GetObject(currentMapId, OpenMode.ForWrite) ' Get the position to move the element to Dim iterator As IEnumerator = currentMap.NewIterator(True, True) Do While (iterator.MoveNext()) ' Bis ans Ende laufen Loop ' Set the position Dim pos As IEnumerator = iterator ' Move the element currentMap.MoveItem(elementIdTobeMoved, pos) trans.Commit() trans = Nothing isMoved = True Catch e As Autodesk.AutoCAD.Runtime.Exception Utility.ShowMessage(vbNewLine & "Failed to move element.") Finally If Not trans Is Nothing Then trans.Abort() trans = Nothing End If End Try
Return isMoved End Function
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 |
Brischke Moderator CAD on demand GmbH
       

 Beiträge: 4191 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools
|
erstellt am: 24. Feb. 2014 12:07 <-- editieren / zitieren --> Unities abgeben:          Nur für Stelli1
Hallo Wilfried, für die Zeichnungsreihenfolge gibt es in der Zeichnung eine extra Table -- ff mal (eine meiner) Bibliotheksfunktionen, die den Zugriff darauf verdeutlicht.
Code:
internal static void dtDraworder_ToBottom(BlockTableRecord _btr, Transaction _tr, ObjectIdCollection _doOids) { DrawOrderTable _doTab = (DrawOrderTable)_tr.GetObject(_btr.DrawOrderTableId, OpenMode.ForWrite); _doTab.MoveToBottom(_doOids); _doTab.Close(); }
Bei Fragen ... Grüße! Holger ------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen.
 defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stelli1 Ehrenmitglied Verm.-Ing.
    
 Beiträge: 1526 Registriert: 17.08.2005 Map 2000-2014, Rasterdesign MapGuide autodesk Topobase 2-2014 VS6, VS.net 2010
|
erstellt am: 24. Feb. 2014 12:57 <-- editieren / zitieren --> Unities abgeben:         
Hallo Holger, danke für die prompte Antwort. So wie ich das sehe wird in deiner Funktion die Reihenfolge der DWG Elemente geregelt. Ich möchte die Map Layer beeinflussen (siehe Bild). Oder werden die auf in der DrawOrderTable geregelt? Irgendwie habe ich da einen Verdacht das das Ganze nicht optimal in Map zusammenläuft. Da habe ich die AutoCAD API, die Map API und die OSGEO.FDO Api. 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 Ehrenmitglied Verm.-Ing.
    
 Beiträge: 1526 Registriert: 17.08.2005 Map 2000-2014, Rasterdesign MapGuide autodesk Topobase 2-2014 VS6, VS.net 2010
|
erstellt am: 24. Feb. 2014 13:03 <-- editieren / zitieren --> Unities abgeben:         
|
Brischke Moderator CAD on demand GmbH
       

 Beiträge: 4191 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools
|
erstellt am: 25. Feb. 2014 06:01 <-- editieren / zitieren --> Unities abgeben:          Nur für Stelli1
Hallo Wilfried, keine Ahnung, wie das in MAP geregelt ist/wird. War nur eine Idee, ob die Hilft ... ? Was ich mir aber vorstellen kann ist, dass MAP einfach nur die ElementReihenfolge entsprechend derer Layerzugehörigkeit in die DrawOrderTable schreibt.(weshalb ich das auch gepostet habe) Grüße! Holger ------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen.
 defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!

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