coyotte Posté(e) le 30 juillet 2015 Posté(e) le 30 juillet 2015 Bonjour à tous, je viens vers vous car je cherche à filtrer les Poyline2D et polyline3D en une fois au sein de la database de mon fichier. Dans un premier cela est il possible, et surtout la question à un euro comment ? Merci d'avance de vos réponses. http://www.carpetdiem.netPlugins pour AutoCAD
nG! Hebus Posté(e) le 30 juillet 2015 Posté(e) le 30 juillet 2015 Salut, En programmation je sais pas mais sinon tu peux : Sélectionner l'ensemble de tes polylignes (2D et 3D)Clic droitPropriétéssélection rapide (carré vert petite fléche et éclair)ensuite tu sélectionne type d'objet (ex: polylignes 2D)Dans opérateur (menu déroulant en bas) "Tout sélectionner"et pis t'a toutes tes polylignes 2D Pareil que ce sois blocs ou autres cela fonctionne. "98% des soucis informatiques sont assis entre la chaise et le bureau !" "C'est parce que la vitesse de la lumière est supérieure à celle du son que tant de gens paraissent brillants avant d'avoir l'air con."
(gile) Posté(e) le 30 juillet 2015 Posté(e) le 30 juillet 2015 Salut, Un exemple pour récupérer les polylignes 2d et 3d dans tous les espaces. private static IEnumerable<ObjectId> GetPolylines2d3dIds(Database db) { var pline2dClass = RXClass.GetClass(typeof(Polyline2d)); var pline3dClass = RXClass.GetClass(typeof(Polyline3d)); using(Transaction tr = db.TransactionManager.StartOpenCloseTransaction()) { var bt = (BlockTable)tr.GetObject(db.BlockTableId, OpenMode.ForRead); return bt .Cast<ObjectId>() .Select(id => (BlockTableRecord)tr.GetObject(id, OpenMode.ForRead)) .Where(btr => btr.IsLayout) .SelectMany(btr => btr.Cast<ObjectId>()) .Where (id => id.ObjectClass == pline2dClass || id.ObjectClass == pline3dClass); } } L'équivalent en F# montre bien comment Linq s'est inspiré de F# pour introduire la programmation fonctionnelle en C# (et VB). let getPolylines2d3dIds (db : Database) = let pline2dClass = RXClass.GetClass(typeof<Polyline2d>) let pline3dClass = RXClass.GetClass(typeof<Polyline3d>) use tr = db.TransactionManager.StartOpenCloseTransaction() tr.GetObject(db.BlockTableId, OpenMode.ForRead) :?> BlockTable |> Seq.cast<ObjectId> |> Seq.map (fun id -> tr.GetObject(id, OpenMode.ForRead) :?> BlockTableRecord) |> Seq.collect(fun btr -> Seq.cast<ObjectId> btr) |> Seq.filter(fun id -> id.ObjectClass = pline2dClass || id.ObjectClass = pline3dClass) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
coyotte Posté(e) le 30 juillet 2015 Auteur Posté(e) le 30 juillet 2015 Merci Gile, comme d'habitude toujours super réactif. http://www.carpetdiem.netPlugins pour AutoCAD
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant