Aller au contenu

Classement

Contenu populaire

Affichage du contenu avec la meilleure réputation le 13/04/2015 dans Messages

  1. Salut, Il n'y a pas moyen de filtrer directement par attribut (que ce soit valeur ou étiquette). Il faut donc ouvrir le bloc et parcourir les attributs. Ceci peut se faire a posteriori une fois la sélection faite ou pendant la sélection en utilisant l’évènement SelectionAdded. [CommandMethod("CMD")] public void TestCommand() { Editor ed = AcAp.DocumentManager.MdiActiveDocument.Editor; TypedValue[] filter = { new TypedValue(0, "INSERT"), new TypedValue(66, 1) }; ed.SelectionAdded += onSelectionAdded; PromptSelectionResult psr = ed.GetSelection(new SelectionFilter(filter)); ed.SelectionAdded -= onSelectionAdded; if (psr.Status == PromptStatus.OK) ed.SetImpliedSelection(psr.Value); } void onSelectionAdded(object sender, SelectionAddedEventArgs e) { Document doc = ((Editor)sender).Document; using (Transaction tr = doc.TransactionManager.StartOpenCloseTransaction()) { ObjectId[] ids = e.AddedObjects.GetObjectIds(); for (int i = 0; i < ids.Length; i++) { BlockReference br = (BlockReference)tr.GetObject(ids[i], OpenMode.ForRead); foreach (ObjectId id in br.AttributeCollection) { AttributeReference att = (AttributeReference)tr.GetObject(id, OpenMode.ForRead); if (att.Tag != "TOTO") { e.Remove(i); break; } } } tr.Commit(); } }
    1 point
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité