| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Linentyp ändern (687 mal gelesen)
|
Boehri Mitglied
Beiträge: 80 Registriert: 07.04.2008
|
erstellt am: 02. Dez. 2010 10:21 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich stehe mit vb.net noch ziemlich am Anfang und möchte die LinetypTable durchlaufen , den Namen auswerten und gegen einen anderen Linientyp ersetzen. Danach soll die Farbe und die Linienstärke ebenfalls geändert werden. Folgenden Code habe ich mir erarbeitet :-).
Code:
<CommandMethod("p2m")> _ Public Sub LinientypPit2Mep() '' Get the current document and database Dim acDoc As Document = Application.DocumentManager.MdiActiveDocument Dim acCurDb As Database = acDoc.Database '' Start a transaction Using acTrans As Transaction = acCurDb.TransactionManager.StartTransaction() Try '' Open the Linetype table record of the current linetype for write Dim acLineTypTblRec As LinetypeTableRecord acLineTypTblRec = acTrans.GetObject(acCurDb.Celtype, _ OpenMode.ForWrite) For Each acObjID As ObjectId In acLineTypTblRec <- Hier scheitere ich schon Select Case acLineTypTblRec.Name Case " xxxxx " acLineTypTblRec.Name = " yyyyy " End Select Next acTrans.Commit() Catch ex As Autodesk.AutoCAD.Runtime.Exception
acDoc.Editor.WriteMessage(ex.Message) End Try End Using End Sub
Vielleicht kann mir jemand bei der Lösung helfen. Vielen Dank!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 02. Dez. 2010 21:34 <-- editieren / zitieren -->
Hi, >> und möchte die LinetypTable durchlaufen Das bezieht sich aber nicht auf Deinen Code, oder? Denn in Deinem CodeSnippet versuchst Du, Items eines Linientyps zu bekommen, und sowas gibt es nicht. Der LineTypeTableRecord hat gerade mal ein paar Eigenschaften, aber keinen Enumerator, sprich da gibt's keine Subelemente, die Du durchlaufen kannst. Durchlaufen der LineTypeTable und Auswertung des Linientypnamens wäre folgendermassen:
Code: Dim tLTTable As LinetypeTable = CType(acTrans.GetObject(acCurDb.LinetypeTableId, OpenMode.ForRead), LinetypeTable) Dim tLTTableEnum As SymbolTableEnumerator = tLTTable.GetEnumerator Do While tLTTableEnum.MoveNext Dim tLTTableRecID As ObjectId = tLTTableEnum.Current If tLTTableRecID.IsValid AndAlso (Not tLTTableRecID.IsErased) Then Dim tLTRec As LinetypeTableRecord = CType(acTrans.GetObject(tLTTableRecID, OpenMode.ForRead), LinetypeTableRecord) Debug.Print(tLTRec.Name) End If Loop
>> Danach soll die Farbe und die Linienstärke ebenfalls geändert werden
Da bin ich nicht sicher, ob wir vom gleichen sprechen. Denn das Ändern eines Linientyps führt nicht zur Änderung der Farbe oder einer Linienstärke, Farbe und Linienstärke sind keine Eigenschaft von Linientypdefinitionen, sondern Eigenschaften von Geometrieelementen. - alfred - ------------------ www.hollaus.at |
Boehri Mitglied
Beiträge: 80 Registriert: 07.04.2008
|
erstellt am: 03. Dez. 2010 13:12 <-- editieren / zitieren --> Unities abgeben:
Sorry, sorry, ich habe einen Denkfehler gemacht. Ich möchte nun nicht die Linetypetable durchlaufen sondern die Layertable. Hier möchte ich nach dem Linientyp suchen, und dann den Linientyp ,die Layerfarbe und die Linienstärke ändern. Grund hierfür ist folgender: Linien in vorhandene Zeichnungen wurden alle mit komplexen Linientypen erstellt. Durch eine Revision unserer CAD-Richtlinien sind die Linientypen sowie Faben und Strichstärken geändert worden. Trotzdem vielen Dank! Wenn du mir einen Denkanstoss geben könntest wäre ich dir sehr dankbar.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 03. Dez. 2010 18:44 <-- editieren / zitieren -->
Hi, das Konzept ist das gleiche, Du holst Dir die LayerTable, erzeugst daraus den Enumerator und scanst durch. Tausche oben LineTypeTable gegen LayerTable, LineTypeTableRecord gegen LayerTableRecord und Du bist, wo Du hinwolltest. Zumindest sehe ich sonst keine Frage in Deiner Antwort. - alfred - ------------------ www.hollaus.at |
Boehri Mitglied
Beiträge: 80 Registriert: 07.04.2008
|
erstellt am: 14. Dez. 2010 08:59 <-- editieren / zitieren --> Unities abgeben:
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|