Aller au contenu

Modifier un solide 3D en lisp


-DD-

Messages recommandés

Bonjour,

 

 

Je voulais savoir s'il était possible de modifier la "hauteur" d'un cylindre en lisp.

 

J'ai un solide 3D (le cylindre) et je voudrais modifier la valeur de l'extrusion.

 

Manuellement j'y arrive via la fenetre des propriétés dans "Géométrie" la valeur "hauteur"

 

Mais je voudrais l'automatiser.

 

 

Merci d'avance

Lien vers le commentaire
Partager sur d’autres sites

J'ai testé le thickness

 

 

  				(vla-put-thickness VSOL scale)
			(vla-update VSOL)

 

 

Avec VSOL mon objet vlax et scale la distance que je veux mettre à l'extrusion.

 

Sur une ligne simple ca fonctionne, il me met bien l'épaisseur que je veux.

 

Par contre sur mon solide 3D (une extrusion d'un anneau) ca ne fonctionne pas

 

Autocad me renvoie le message suivant : erreur: Le serveur ActiveX a renvoyé l'erreur: nom inconnu: Thickness

Lien vers le commentaire
Partager sur d’autres sites

Eh non, les volumes par Autolisp, c'est pas facile.

Par contre, la commande EDITSOLID (qui contient toutes les options de la barre d'outils du même nom) répond très bien en pur autolisp (avec des "command"). Mais il faudrait viser avec précision pour sélectionner les faces, si tu passes par le calcul, il n'y a pas de raison que ça ne fonctionne pas.

S'il faut cliquer sur la face du volume, Autolisp répond bien aussi.

Pour le reste, point de salut en Vlisp.

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Lien vers le commentaire
Partager sur d’autres sites

Merci pour cette réponse.

 

 

Je pensais faire simple, mais le lisp c'est plus compliqué. :)

 

Sinon qu'est ce qui est le plus simple passer par "EDITSOLID" ou décomposer le solide et ré-extruder la région initiale ?

Lien vers le commentaire
Partager sur d’autres sites

De deux choses l'une :

1. tu connais le volume pour l'avoir dessiné (par prog ou pas)

Tu as donc les coordonnées du parfait centre de ta face, en enlevant les accrobj, ça marche très bien pour les sous-options de la commande EDITSOLIDE avec command dans un lisp classique.

 

2. tu ne connais pas le volume.

mets donc un "pause" dans ton command.

 

pour répondre à ta question, décomposer va demander que tu retrouves l'entité la plus haute (si ton cylindre est droit, etc...). Or les régions (ce que tu obtiens) ou les corps sont "codés". Mission délicate.

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Lien vers le commentaire
Partager sur d’autres sites

je connais mon solide

 

un tube (creux) de 1m de long

 

Je connais le centre de la face, dans le referentiel du bloc (1,0,0)

 

Mais dans le dessin comment je le recupere ?

 

comme ca vient d'un bloc je peux connaitre la position dans mon dessin du point 0,0,0 du solide à extruder. (faut il que je le calcule à partir de ce point ?

Lien vers le commentaire
Partager sur d’autres sites

Ah, il est vrai que je ne suis pas sur la dernière version.

J'ignorais qu'on avait accès à ces propriétés.

On en apprend tous les jours.

 

(setq obj(vlax-ename->vla-object(car(entsel))))
(setpropertyvalue obj "Height" 100)

Je viens de tenter sur 2013 et, si la commande n'est pas inconnue, comme sur une version plus ancienne, elle semble transparente chez moi et donc sans effet. MAis sans erreur !

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Lien vers le commentaire
Partager sur d’autres sites

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é