Aller au contenu

Objet Autocad MAP "invisible" pour un SSGET


Messages recommandés

Posté(e)

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!

Posté(e)

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

Posté(e)

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

Posté(e)

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!

Posté(e)

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

J'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!

Posté(e)

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!

Posté(e)

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

Posté(e)

Autocad MAP 2011.

 

Ce que nous applicons:

L'on sélectionne un objet dans un shp chargé en FDO.

On lui applique un calque

On 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!

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • 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é