| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Einzelne Auswahl (Anfänger) (928 mal gelesen)
|
Meldin Mitglied
Beiträge: 381 Registriert: 15.07.2011
|
erstellt am: 31. Okt. 2016 10:51 <-- editieren / zitieren --> Unities abgeben:
Hallo allerseits, ich habe mir VS2015 und AC2017 als Testversion auf mein Laptop gezogen und wollte mir neben dem allabendlichen Fernsehprogramm C# ein wenig näher bringen. Eine ganz schöne Mammutaufgabe. Zudem ist es um so schwieriger wenn schon die Programmen an sich nicht funktionieren (AC2017) denn Debuggen geht nur wenn SP1 aufgespielt wurde. Das hat mich schon etliche Stunden gekostet. Und mein nächster Schritt bis jetzt nochmal so viele Stunden. Ich möchte einfach nur ein Objekt auswählen wie in LISP (entsel) das mir anhand der Pickbox meine Auswahl festlegt. Alles was ich in C# als selection finde ist GetSelection was Auswahl technisch in Lisp (ssget) nahe kommt was demzufolge eine Auswahl mehrerer Objekte hätte wenn man mit SelectWindow arbeitet und damit die Pickbox berücksichtigt zudem müsste man noch das oben liegende Objekt herausfinden. Daher denke ich jetzt mal ich habe mich jetzt nur verrannt in der Masse an Infos die auf mich eingeprasselt sind. Vielleicht kann mich ja jemand mit den richtigen Infos wieder ans Licht führen. ------------------ Gruß Wolfgang Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Ehrenmitglied V.I.P. h.c. 良い精神
Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 31. Okt. 2016 10:54 <-- editieren / zitieren --> Unities abgeben: Nur für Meldin
|
Meldin Mitglied
Beiträge: 381 Registriert: 15.07.2011
|
erstellt am: 02. Nov. 2016 15:44 <-- editieren / zitieren --> Unities abgeben:
|
cadplayer Ehrenmitglied CADniker
Beiträge: 1832 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 03. Nov. 2016 19:45 <-- editieren / zitieren --> Unities abgeben: Nur für Meldin
Ein Beispiel hier zur "einfachen" Auswahl eines Civil3dSurfaces: Code:
public void SelectTinSurface() { PromptEntityOptions options = new PromptEntityOptions("\nSelect a Surface"); options.SetRejectMessage("\nThe selected object is not a Surface."); options.AddAllowedClass(typeof(TinSurface), false); PromptEntityResult result = ed.GetEntity(options); switch (result.Status) { case PromptStatus.OK: this.SurfaceId = result.ObjectId; break; case PromptStatus.Cancel: this.SurfaceId = ObjectId.Null; ed.WriteMessage("Select canceled"); return; } if (ObjectId.Null == SurfaceId) { ed.WriteMessage("\nNo TIN Surface object was selected."); } }
------------------ Gruss Dirk Blog | Adolf Spende | Infra-Feed | ÅF AB
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadplayer Ehrenmitglied CADniker
Beiträge: 1832 Registriert: 28.04.2009
|
erstellt am: 03. Nov. 2016 19:50 <-- editieren / zitieren --> Unities abgeben: Nur für Meldin
und hier noch inform eines Selectionsetfilters Code:
private bool trySelectTable(out ObjectId oTableId) { oTableId = ObjectId.Null; if (!isValid) return false; Document doc = Application.DocumentManager.MdiActiveDocument; Database acWdb = doc.Database; Editor ed = doc.Editor; try { PromptSelectionResult selResult = ed.SelectImplied(); if (selResult.Value == null) { TypedValue[] values = new TypedValue[1] { new TypedValue((int)DxfCode.Start, "ACAD_TABLE") }; SelectionFilter filter = new SelectionFilter(values); PromptSelectionOptions selOpt = new PromptSelectionOptions(); selOpt.SingleOnly = true; selOpt.MessageForAdding = "Select Table"; do { selResult = ed.GetSelection(selOpt, filter); if (selResult.Status == PromptStatus.Error) ed.WriteMessage("\nNo object selected"); } while (selResult.Status == PromptStatus.Error); } if (selResult.Status != PromptStatus.OK) return false; oTableId = selResult.Value.GetObjectIds()[0]; } catch { return false; } return true; }
Schön, dass du jetzt auch mit .net anfängst. Dann wird es hier vielleicht etwas lebhafter. ------------------ Gruss Dirk Blog | Adolf Spende | Infra-Feed | ÅF AB
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Meldin Mitglied
Beiträge: 381 Registriert: 15.07.2011 ACA2020 Windows10
|
erstellt am: 10. Nov. 2016 23:32 <-- editieren / zitieren --> Unities abgeben:
Danke erst mal für deine hilfe aber Zitat: Schön, dass du jetzt auch mit .net anfängst. Dann wird es hier vielleicht etwas lebhafter.
Schön ist anders und wenn ich hier wirklich alle Probleme schilder würde die mir wo im weg liegen wäre das Forum hier nicht lebhaft sondern voll die eigentliche Abläuft sind eigentlich immer ersichtlich eher die zugriffe machen mir Probleme da nicht immer alle Möglichkeiten ersichtlich sind. Wie zum Beispiel jetzt. Ich wollte ein einfaches tool unsetzen was ich eigentlich immer in lisp benutze wähle ein attribut was dann zur folge hat das alle attribute in der Zeichnung durchsucht werden und dann alle blöcke auswählt die den gleichen urprungs attribut Wert besitzen diese kann ich dann mit druck auf die taste L löschen. Dieses prog läuf in einer endlos schleife und brauche immer nur ein Att wählen und L drücken (ohne Enter zu drücken). In lisp mit ggread realisiert, nur hier habe ich bisher keine verständliche Lösung gefunden eine Auswahl von einem tastatendruck zu unterscheiden. für einen tipp wäre ich dankbar. Aber alles in allem fällt C# mir nicht gerade leicht. ------------------ Gruß Wolfgang Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4171 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools
|
erstellt am: 11. Nov. 2016 06:42 <-- editieren / zitieren --> Unities abgeben: Nur für Meldin
Hallo Wolfgang, deineErfahrung kann ich nur bestätigen ... mir ging es genauso, als ich von Lisp auf .Net umgestiegen bin. Also: Drannbleiben! Dass dir .Net nicht leicht fällt, das wird sich ändern. Wenn es dir möglich ist, besuche eine Schulung, am besten mit AutoCAD als Basis zum Erlernen der Sprache. Vielleicht gelingt es dir, ein paar Leute zusammen zu bekommen, dann könnte ich das machen - für eine 1-Personen Schulung bin ich den meisten zu teuer. Eine Schulung finde ich deshalb so wichtig, weil,es gerade den Lisp-Umsteigern extrem schwer fällt in die objektorientierte Programmierung reinzufinden. Das kann man auch kaum aus Büchern rausnehmen - es muss ein Umdenken stattfinden, bei mir hat das bis zur vollständigen Erkenntnis sicher auch 1-2 Jahre gedauert. Das soll dir keine Angst machen, sondern aufzeigen, dass dir mit dem, was du gerade durchmachst, nicht nur allein so geht. Nun noch kurz zu deinem Problem: das lässt sich sicher mit irgendwelchen Events abbilden. Da allerdings die API weder in Lisp noch in .Net eine Möglichkeit bietet, bei der Objektwahl direkt auf einen Tastendruck zu reagieren, würde das ein Zusammenspiel aus dem genannten Event und der Objektwahl hinauslaufen. Für dich als Einsteiger würde ich empfehlen einen anderen Weg zu suchen. Als Stichwort möchte ich Jig nennen. Sowohl auf http://through-the-interface.typepad.com/through_the_interface/about-the-author.html als auch auf der AUTOCAD Magazin Tool-CD 7/2012 findest du c#-Code dafür, der eben genau die Blockreferenzen markiert, bei denen der Attributwert gleich ist ... also nahezu das, was du als Kern definiert hast. Da kannst du schauen, wie das umgesetzt wurde. Das Tool auf der ACM-Tool-CD ist von mir, ebenfalls aus meiner Anfangszeit. 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 |