Aller au contenu

Editer propriétés sur plusieurs objets via dcl


Messages recommandés

Posté(e)

Bonjour à tous,

 

Je souhaiterais éditer plusieurs objets via une case de dialogue type illustré comme l'image ci-dessous :

 

http://lh5.ggpht.com/_-Pf6GVUPhGA/SuFf5ODHTCI/AAAAAAAAABg/1bW8l_lCQy0/Editeur%20de%20Donnees%20Objets-simplifi%C3%A9.jpg

 

Elle pourrait servir a modifier une collection d'objets AutoCAD par exemple des propriétés standard d'AutoCAD, les xdatas ou bien les données d'objets.

 

2 problèmes à mon niveau :

- comment créer en langage DCL standard la zone de liste à cases multiples.

- comment faire la relation entre la ligne sélectionnée et l'objet AutoCAD (notement pour les modifications en temps réel ainsi qu'un zoom.

 

Merci pour vos idées.

 

Fabrice,

 

[Edité le 23/10/2009 par fabcad]

Posté(e)

salut fabcad,

 

Pour ta boite de dialogue, je crois qu'en DCL pur c'est presque impossible,

je dis presque, car il est possible de faire quelque chose approchant ca.

Reste à savoir combien d'éléments par objet tu veux afficher...

 

Pour la màj directe, je serai plutôt contre, mais pourquoi ?

Et bien par ce que ;) , en fait il me parait plus judicieux de travailler ainsi:

- choisir tes entités

- création d'une "super" liste contenant des sous-listes de ce type (entité oid infos1 infos2 ....)

- ouverture de la dcl + chargement de infos

- modification des entités dans la dcl + màj de la liste

- clic sur bouton "appliquer" => application des infos de la liste

 

Bon, maintenant, si tu es malin, tu peux dire que mon premier jet de méthode comporte

une non optimisation : "Et si on ne change rien? ou très peu?"

 

Ahaha, l'astuce réside dans le fait deux faire deux listes :) , une pour les infos

originelles, et l'autre pour la dcl, ensuite par simple comparaison on ne mettra à jour

que ce qu'il faut.

 

 

Pour finir, si tu veux de l'aide donne plus d'infos sur "ton cahier des charges"

 

a+

Tous pour lisp, Lisp pour tous!

Avec Revit, cela ne vas trop vite...

Posté(e)

resalut fabcad,

 

Oui et non, en fait tu peux utiliser le code dxf 5

avec un handent dessus, tu récupères l'entité.

 

Mais il y a aussi l'oid en vlisp, qui lui est un chiffre, il est utilisé dans les champs

si tu as eu déjà l'occasion de le voir.

 

Pour moi le plus simple serai de stocker l'entité même dans la liste (comme notée

dans ma première réponse) mais de n'afficher que le code dxf 5 qui lui est unique

Tous pour lisp, Lisp pour tous!

Avec Revit, cela ne vas trop vite...

Posté(e)

Salut,

 

Petites précisions.

 

Le ENAME d'AutoLISP et l'ObjectId utilisé en Visual LISP correspondent au même identifiant pour les objets (graphiques ou non).

Pour preuve, dans retourné par (car (entsel)), par exemple, 7efe0a78 est la forme hexadécimale de 2130578040 retourné par (vla-get-ObjectId ...) sur le même objet (voir les routines gc:EnameToObjectId et hex2dec ici).

 

Le maintien (handle) code de groupe 5 des listes DXF est un autre identifiant pour les objets AutoCAD.

Pendant une session, il est toujours possible de passer de l'un à l'autre (handent ou vla-vla-HandleToObject).

 

Mais la différence la plus importante entre handle et ename ou ObjectId est leur pérénité.

Le handle est invariant pendant toute la durée de vie de l'objet, par contre ename et ObjectId sont susceptibles de changer entre deux ouverture du dessin.

En effet si on ouvre un fichier DXF avec le bloc-note, on retrouve le code 5 pour tous les objets mais pas de code -1 (ni 330, 350, 360, etc.).

C'est à la réouverture du document que les objets se voient attribuer leur ObjectId ou ename et il peut être différent de celui qu'ils avaient lors d'un session précédente.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

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é