cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009
|
erstellt am: 11. Nov. 2015 11:05 <-- editieren / zitieren --> Unities abgeben:
Ich habe etwas Probleme den SelectionFilter richtig anzusprechen. Ich möchte eine OjectCollection erhalten, entsprechend Layername und Objekttyp: Code: ObjectIdCollection coll = new ObjectIdCollection(); switch (sel.EntName) { case "AcDbPolyline": descr = string.Format("Layer=" + sel.Layername + ", 2D"); coll = Selection.SsetFilter(sel.Layername, sel.EntName); surf.Tinsurface.BreaklinesDefinition.AddStandardBreaklines(coll, 10, 5, 5, 0); break; case "AcDb2dPolyline": descr = string.Format("Layer=" + sel.Layername + ", 2D"); coll = Selection.SsetFilter(sel.Layername, sel.EntName); surf.Tinsurface.BreaklinesDefinition.AddStandardBreaklines(coll, 10, 5, 5, 0); break; case "AcDb3dPolyline": descr = string.Format("Layer=" + sel.Layername + ", 3D"); coll = Selection.SsetFilter(sel.Layername, sel.EntName); surf.Tinsurface.BreaklinesDefinition.AddStandardBreaklines(coll, 10, 5, 5, 0); break; }
Das Problem im Selectionfilter ist, dass ich vermutlich den (int)DxfCode.Subclass, "AcDb2dPolyline"), 100); falsch anspreche, wie muss das richtig lauten? Nach dieser Variante werden mir alle Polylinien auf Layer "200" ausgelesen. Es sollten jedoch nur die 3dPolylinien sein
Code: [CommandMethod("FilterSelectionSet")] public static void FilterSelectionSet() { // Get the current document editor Editor acDocEd = Application.DocumentManager.MdiActiveDocument.Editor; // Create a TypedValue array to define the filter criteria TypedValue[] acTypValAr = new TypedValue[3] { new TypedValue((int)DxfCode.Subclass, "AcDb3dPolyline"), new TypedValue((int)DxfCode.LayerName, "200"), new TypedValue((int)DxfCode.LayoutName, "Model"), }; // Assign the filter criteria to a SelectionFilter object Autodesk.AutoCAD.EditorInput.SelectionFilter acSelFtr = new Autodesk.AutoCAD.EditorInput.SelectionFilter(acTypValAr); // Request for objects to be selected in the drawing area PromptSelectionResult acSSPrompt; acSSPrompt = acDocEd.GetSelection(acSelFtr); // If the prompt status is OK, objects were selected if (acSSPrompt.Status == PromptStatus.OK) { SelectionSet acSSet = acSSPrompt.Value; Application.ShowAlertDialog("Number of objects selected: " + acSSet.Count.ToString()); } else { Application.ShowAlertDialog("Number of objects selected: 0"); } }
------------------ Gruss Dirk Blog | Adolf Spende | Infra-Feed | ÅF AB
[Diese Nachricht wurde von cadplayer am 11. Nov. 2015 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |