alala Posté(e) le 19 septembre 2012 Posté(e) le 19 septembre 2012 Bonjour, Je cherche actuellement à automatiser le passage d'objet Autocad MAP (en l'occurence des SHP chargé en FDO) d'un calque à un autre. J'ai donc "bétement" fait un (entget(car(entsel))) sur un objet de chaque élément et j'obtient :((-1 . <Nom d'entité: 7ef2e438>) (0 . "MAPBULKFEATURE") (330 . <Nom d'entité: 7ef1fd18>) (5 . "8DD7") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "Z_SIG") (100 . "AcMapBulkFeature") (70 . 1))((-1 . <Nom d'entité: 7ef2e450>) (0 . "MAPBULKFEATURE") (330 . <Nom d'entité: 7ef1fd18>) (5 . "8DDA") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "Z_SIG") (100 . "AcMapBulkFeature") (70 . 1))((-1 . <Nom d'entité: 7ef2e460>) (0 . "MAPBULKFEATURE") (330 . <Nom d'entité: 7ef1fd18>) (5 . "8DDC") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 . "AcMapBulkFeature") (70 . 1)) je note donc le (0 . "MAPBULKFEATURE") et crée ma routine qui change de calque les objets avec cela : (defun c:cad2sig ( / messhp i ) (setq messhp (ssget "X" (list '(0 . "MAPBULKFEATURE")))) (setq i 0) (repeat (sslength messhp) (entmod (subst (cons 8 "Z_SIG") (assoc 8 (entget (ssname messhp i))) (entget (ssname messhp i)) ) ) (setq i (1+ i)) ) ) Et je découvre donc que ma routine ne compte que deux objets et donc que le dernier n'est pas traité. Avez vous une solution à cela? Merci d'avance. C'est en forgeant que l'on devient forgerons.Et c'est en sciant que Léonard DeVinci!
lovecraft Posté(e) le 19 septembre 2012 Posté(e) le 19 septembre 2012 Bonjour, Ce que tu recherches à faire n'est pas possible. IL ne faut pas confondre couche FDO (connexion SIG) et les calques Autocad. Les entités d'une connexion FDO ne sont pas liées à un calque Autocad. Ce que tu peux faire pour gérer tes couches, ce sont des cartes ou là tu pourras gérer l'aspect visuel (c'est de la cartographie) Dis nous ce que tu recherches exactement à faire et dans quel but. Cordialement, Laurent http://www.youtube.com/user/CADMINATOR?feature=mhee
lecrabe Posté(e) le 19 septembre 2012 Posté(e) le 19 septembre 2012 Hello Avis d'un NON Programmeur, donc prudence ... A priori je crois que c impossible de traiter en Lisp/Vlisp des Objets FDO (MapBulkFeature) Il me semble que seul le Dotnet et les API Dotnet de MAP permettent ce genre de choses !?A verifier quand meme ... lecrabe Autodesk Expert Elite Team
alala Posté(e) le 19 septembre 2012 Auteur Posté(e) le 19 septembre 2012 Et pourtant il y a bien une liaison "caché" entre les calques et les Objets FDO. Celle-ci se réinitialise d'ailleur à chaque chargement du plan et place les objets FDO enregistré sur le calque ACTIF. Le but est donc ici de dispose de deux fenetres de présentation sur une même présentation, l'une affichant les couches FDO et l'autre non. Perso j'aurais choisit de jouer avec la valeur de visibilité en fonction de l'echelle mais je n'ai pas la maitrise de cet élément dans ce cas précis. Dans tous les cas je ne comprend pas qu'un ssget "X" ne trouve pas cet objet quand un ssget avec sélection manuelle ne pose aucun soucis. Merci C'est en forgeant que l'on devient forgerons.Et c'est en sciant que Léonard DeVinci!
alala Posté(e) le 19 septembre 2012 Auteur Posté(e) le 19 septembre 2012 Hello Avis d'un NON Programmeur, donc prudence ... A priori je crois que c impossible de traiter en Lisp/Vlisp des Objets FDO (MapBulkFeature) Il me semble que seul le Dotnet et les API Dotnet de MAP permettent ce genre de choses !?A verifier quand meme ... lecrabeJ'avais cru lire que ça concernais les objet dans objet FDO, donc pas l'objet FDO en lui même, mais je me trompe peu être (surrement). Je continu mes recherches. Merci C'est en forgeant que l'on devient forgerons.Et c'est en sciant que Léonard DeVinci!
lovecraft Posté(e) le 19 septembre 2012 Posté(e) le 19 septembre 2012 Hello, donc plusieurs possibilité N'oublies pas lorsque tu fais un SSGET "X" de faire un Zoom étendu avant. Ensuite pour ce que tu recherches à faire , tu peux le gérer avec la création de carte Cordialement, Laurent http://www.youtube.com/user/CADMINATOR?feature=mhee
alala Posté(e) le 19 septembre 2012 Auteur Posté(e) le 19 septembre 2012 Le soucis c'est que l'on importe des calques FDO (.layers) directement configurés et que reconfigurer pour chaque plan serait "pénible". D'ou l'intérêt d'une routine qui place tout dans un calque gelé dans la fenêtre qui nous convient et pas dans l'autre. Merci pour ton aide. C'est en forgeant que l'on devient forgerons.Et c'est en sciant que Léonard DeVinci!
lovecraft Posté(e) le 19 septembre 2012 Posté(e) le 19 septembre 2012 re, personnellement je n'arrive pas à mettre des entités fdo dans un calque autocad. C'est uniquement possible lorsque les entités sont extraites pour modification. La effectivement tu peux les affecter à des calques. Mais lorsque tu archives les objets, c'est retour à la case départ. Pour info: Qu'elle est ta version de Map ? Cordialement, Laurent http://www.youtube.com/user/CADMINATOR?feature=mhee
alala Posté(e) le 19 septembre 2012 Auteur Posté(e) le 19 septembre 2012 Autocad MAP 2011. Ce que nous applicons:L'on sélectionne un objet dans un shp chargé en FDO.On lui applique un calqueOn géle le calque dans la fenetre de présentation.Tous le SHP est maintenant invisible (car gelé) dans la fenêtre sélectionné. Et pour ça il aura suffit de sélectionner un élément pas plus. Donc j'en conclu que le FDO est géré comme un objet unique par autocad et qu'ensuite MAP viens faire sans petites manips dessus (d'ailleurs si l'on regarde dans les dictionnaires il semble qu'il y ait des réacteurs sur les objets maps). J'ai bien peur que vous aillez raison et que les objets maps soient si "spéciaux" qu'il perturbent même le fonctionnement d'un SSGET. Encore merci C'est en forgeant que l'on devient forgerons.Et c'est en sciant que Léonard DeVinci!
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