| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
 | PNY präsentiert die PRO Elite™ High Endurance microSD-Flash-Speicherkarten für Videoüberwachung und kontinuierliche Aufzeichnung, eine Pressemitteilung
|
Autor
|
Thema: LayerFarbe ändern (2306 mal gelesen)
|
cadplayer Ehrenmitglied CADniker
    
 Beiträge: 1833 Registriert: 28.04.2009
|
erstellt am: 26. Mai. 2015 10:07 <-- editieren / zitieren --> Unities abgeben:         
Ich habe zwei Probleme: Einerseits erhalte ich beim Selektieren das korrekt Civil3d-Objekt, möchte ich jedoch die Farbe des Objektes ändern geschieht nix, obwohl mir angezeigt wird das die Farbe geändert wurde
Code: *** start with cobj Command: COBJ Pick a nested entity: Input the new color index (0-255): 5 Entity selected was a AeccDbGraphProfileEntity color: BYLAYER -> Entity color changed in: blue
Hier die Methode
Code: [CommandMethod("cObj")] public void ColorObj() { Document doc = AcAp.DocumentManager.MdiActiveDocument; Database db = doc.Database; Editor ed = doc.Editor; try { PromptNestedEntityOptions nestedEntOpt = new PromptNestedEntityOptions("\nPick a nested entity:"); PromptNestedEntityResult nestedEntRes = ed.GetNestedEntity(nestedEntOpt); if (nestedEntRes.Status == PromptStatus.OK) { PromptIntegerOptions promptOpt = new PromptIntegerOptions("\nInput the new color index (0-255):"); PromptIntegerResult promptRes = ed.GetInteger(promptOpt); using (Transaction tr = db.TransactionManager.StartTransaction()) { ObjectId id = nestedEntRes.ObjectId; Autodesk.AutoCAD.DatabaseServices.DBObject dbObj = tr.GetObject(id, OpenMode.ForRead); ed.WriteMessage("Entity selected was a {0}", dbObj.GetRXClass().Name); // Get the entity for read var entR = (Autodesk.AutoCAD.DatabaseServices.Entity)tr.GetObject(id, OpenMode.ForRead); ed.WriteMessage("Entity color: {0}", entR.Color); // Get the entity for write entR = tr.GetObject(nestedEntRes.ObjectId, OpenMode.ForWrite) as Autodesk.AutoCAD.DatabaseServices.Entity; entR.ColorIndex = promptRes.Value; ed.WriteMessage("\n-> Entity color changed in: {0}", entR.Color); tr.Commit(); } } } catch (System.Exception ex) { ed.WriteMessage(ex.ToString()); } }
------------------ Gruss Dirk Blog | Adolf Spende | Infra-Feed | ÅF AB
 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: 26. Mai. 2015 10:17 <-- editieren / zitieren --> Unities abgeben:          Nur für cadplayer
... 3x Öffnen ohne jemals zu schließen ... Gewöhn dir gleich an, dass du die AutoCAD-Objekte innerhalb eines Using öffnest, da die Close-Methode nur noch aus Kompatibilitätsgründen zur Verfügung steht. Du kannst ein zum Lesen geöffnetes Objekt mit der UpgradeOpen-Methode nachträglich Beschreibbar machen. Code:
using (Autodesk.AutoCAD.DatabaseServices.Entity entR = (Entity)tr.GetObject(id, OpenMode.ForRead)) { // für schreiben öffnen entR.UpgradeOpen(); entR.ColorIndex = promptRes.Value; }
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 |
cadplayer Ehrenmitglied CADniker
    
 Beiträge: 1833 Registriert: 28.04.2009
|
erstellt am: 26. Mai. 2015 11:19 <-- editieren / zitieren --> Unities abgeben:         
Ungewöhnlich, dass der OpenMode auch zum Schreiben verwendet wrden kann - Danke funktioniert bestens! Was aber für den Fall, dass ich ein Civil-Entity, speziell im Profilview wähle, müsste ich demzufolge auf die Klasse Autodesk.Civil.DatabaseServices.Entity zugreifen ?! Damit komme ich ebenfalls nicht weiter Entity selected was a AeccDbGraphProfileEntity color: BYLAYER - Entity layer: PROFIL-VY Wenn ich die Layerfarbe von "PROFIL-VY" ändere (so auch manuell - ändert sich nix) Das ist manchmal verflixt in Civil, da in CivilObjekten, eine einzelne Linie nicht auswählbar bzw. verschachtelt in einem CivilObjekt-layer Da ranzukommen, weiss dass einer? ------------------ Gruss Dirk Blog | Adolf Spende | Infra-Feed | ÅF AB
 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: 26. Mai. 2015 11:35 <-- editieren / zitieren --> Unities abgeben:          Nur für cadplayer
... nunja, deine Anmerkungen zeigen, dass du die OO-Programmierung noch nicht so ganz verinnerlicht hast. Hier hast du es mit Vererbung zu tun. Jedes Objekt, was du im Editor sehen/wählen kannst, wird wohl von Entity erben. Folglich sind alle Objekte auf jeden Fall als Entity zu öffnen. Infolge der Vererbung, besitzt jedes Element (was von Entity erbt) u.a. die Eigenschaften Color und Layer. Willst du speziell ein Civil-Objekt wählen, dann kannst du bei der Editor.GetNested... auch festelegen, von welchem Typ das zu wählende Objekt sein soll. Schau dir daszu mal die *Options-Objekte, die es zu (nahezu) jeder Editot.Get... -Funktion gibt, an. Speziell zu den Civil-Objekten denke ich mal, dass du eine Struktur ähnlich der eines Blockes vermutest. Das kann .. muss aber nicht sein. In Civil sind's ja spezielle Objekte, die nichts mit den reinen AutoCAD-Primitiven zu tun haben müssen bzw. in der API der Zugriff auf die dem Civil-Objekt zugrunde liegenden Primitiven nicht integriert ist. 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 |
cadplayer Ehrenmitglied CADniker
    
 Beiträge: 1833 Registriert: 28.04.2009
|
erstellt am: 26. Mai. 2015 12:34 <-- editieren / zitieren --> Unities abgeben:         
Wo de recht hast, has de recht - werkel vielleicht ein paar Wochen im AutocadNET API rum. Den Durchblick habe ich da noch nicht. Learning bei doing (auch wenn dir das vielleicht nicht zusagt - zwecks Schulung) Dann kommt man eben nur in Mäuseschrittmass vorwärts. Genau ich muss eben mal schauen, was das Civil-ENTITY anbietet - war doch meine Rede... Wie lautet eigentlich das Motto bei Autodesk, wenns händisch nicht geht, geht´s auch nicht programmiertechnisch ?! Scheint mir zuerst für den Anfang auch ziehmlich heikel zu sein, gleich in den Civil-Objekten rumzutesten (modifizieren) Das Brett in Civil bietet mir nur nicht die Möglichkeit, dass was man normalerweise erst in dwt-sheets an styles grundinstalliert auch nachträgl. ändern zu können. Daher mein Versuch, es so hinzukriegen ------------------ Gruss Dirk Blog | Adolf Spende | Infra-Feed | ÅF AB
 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: 26. Mai. 2015 12:54 <-- editieren / zitieren --> Unities abgeben:          Nur für cadplayer
Zitat: Original erstellt von cadplayer: Dann kommt man eben nur in Mäuseschrittmass vorwärts.
das zum Einen und zum Anderen gewöhnt man sich aus (falsche) Unkenntnis Dinge an, die einem irgendwann um die Ohren fliegen. Für die Basic's ist es aus meiner Sicht absolut gewinnbringend (nicht nur für den der die Schulung durchführt) da grundsätzliche Fehler vermieden werden. Zitat: Original erstellt von cadplayer: Wie lautet eigentlich das Motto bei Autodesk, wenns händisch nicht geht, geht´s auch nicht programmiertechnisch ?!
Wenn's so wäre, dann hätte ich als Programmierer nur noch sehr wenig zu tun. Zitat: Original erstellt von cadplayer: Scheint mir zuerst für den Anfang auch ziehmlich heikel zu sein, gleich in den Civil-Objekten rumzutesten (modifizieren)
Wenn man, wie du, bei der Objektorientierten Programmierung noch in den Kinderschuhen steckt, ja. Aber als Autodidakt brauch man ja eine Aufgabe, an der man sich schaffen kann. 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 |
cadplayer Ehrenmitglied CADniker
    
 Beiträge: 1833 Registriert: 28.04.2009
|
erstellt am: 26. Mai. 2015 13:18 <-- editieren / zitieren --> Unities abgeben:         
Die Basics in OOP sind mir schon geläufig, da lege ich die Hand ins Feuer... (War vielleicht auch nicht grad toll mein Beispiel mit den 3Open-methoden reinzustellen. ) Das Autodesk-API stösst mehr auf Unkenntnis, da geht es ja erst ans Eingemachte, wie Klassen - Methoden - Eigenschaften miteinander verzahnt sind. Beispielsweise die Klasse Editor im AutodeskAPI wurde im Vergleich zu WindowsAPI völlig eigens entwickelt. Da ist zwar die Developer Bible von Autodesk anfangs ganz hilfreich, aber noch nicht vollends begreiflich. ------------------ Gruss Dirk Blog | Adolf Spende | Infra-Feed | ÅF AB
 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: 26. Mai. 2015 19:10 <-- editieren / zitieren --> Unities abgeben:          Nur für cadplayer
|
cadplayer Ehrenmitglied CADniker
    
 Beiträge: 1833 Registriert: 28.04.2009
|
erstellt am: 26. Mai. 2015 19:33 <-- editieren / zitieren --> Unities abgeben:         
Danke, ich bin inzwischen auch darauf gestossen, stimmt die Farben sind in den jeweiligen Styles der ViewObjekte abgelegt. In Civil herkömmlich -> Setting tab -> Profilview -> Bandset -> Bandset mit Rechtklick auswählen -> Styles ! Sorry, hab nur die engl. Version - müsste aber nachvollziehbar sein. Im Objektbrowser fand ich ein ProfilViewStyle-Objekt, könnten da auch nähere Angaben zur Objekt-stylefarbe zu finden sein ? Mir ist die Handhabung nicht ganz klar, wo ich etwas finden kann ?! ------------------ Gruss Dirk Blog | Adolf Spende | Infra-Feed | ÅF AB
 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: 26. Mai. 2015 19:57 <-- editieren / zitieren --> Unities abgeben:          Nur für cadplayer
|

| |
cadplayer Ehrenmitglied CADniker
    
 Beiträge: 1833 Registriert: 28.04.2009
|
erstellt am: 27. Mai. 2015 07:20 <-- editieren / zitieren --> Unities abgeben:         
|