Aller au contenu

Messages recommandés

Posté(e)

BONJOUR

 

Savez vous ce que l'on peut mettre comme formule dans un champ ?

 

Je voulais créer un champ à partir de l'expression:

 

(- (sslength (ssget "_x" '((2 . "0-pb-compteur")))) 1)

 

qui me donnait le nombre de bloc 0-pb-compteur dans mon plan en temps réel

mais voila ça ne marche pas...

 

Il faudrait peut être la traduire en diesel mais je ne connais pas...

 

 

Merci de votre aide

  • 2 semaines après...
Posté(e)

"Bien que vous ne puissiez pas théoriquement modifier le code des champs dynamiques, il est tout de même possible de faire un copier/coller de ce code, depuis la boite de dialogue d'insertion de champ vers le contenu d'un Mtext. Entre le copier et le coller, vous pouvez modifier le code, par exemple en passant par le bloc notes de Windows."

 

En suivant ce conseil avisé de Patrick peut-on coller un truc du genre:

%<(- (sslength (ssget "_x" '((2 . "0-pb-compteur")))) 1)>%

 

???

 

Comment le champ peut-il évaluer ma formule?

 

D'avance merci

 

Posté(e)

D'accord mais peut-on la traduire en diesel ?

sinon peut on mettre une formule en vlisp dans un champ?

 

Je cherche désespérément des exemples de champs programmés

pour avoir une idée de la synthaxe mais je ne trouve pas...

 

Par pitié

 

aidez-moi...

Posté(e)

peut-on la traduire en diesel ?

Non

 

mettre une formule en vlisp dans un champ?

Non

 

Par pitié

aidez-moi...

 

La seule solution que je vois pour pouvoir faire ce que tu désires et d'associer ton expression lisp à une variable qui sera évaluée SEULEMENT à chaque ouverture d'un dessin.

 

Pour cela édite le fichier "acad200Xdoc.lsp" (X étant le numéro de la version que tu utilises)

 

Tout à la fin avant le (princ), tu insère ta ligne:

(setq my_var-compteur (sslength (ssget "_x" '((2 . "0-pb-compteur"))))) 

 

Tu ouvres ton dessin et tu insères un champ du type:

%<\AcVar.17.0 Lisp.my_var-compteur>%

 

Sans rien faire, ce champ sera mis à jour à chaque ouverture du dessin.

Si tu veux le mettre à jour en cours de session, tu seras OBLIGE d'exécuter la ligne de code en ligne de commande, puis de mettre à jour ton champ.

 

Peut pas faire mieux avec les champs et du lisp :(

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

Merci pour ta réponse, c'est déjà une super solution...

 

Peut etre les versions suivantes permettrons d'aller plus loin avec les champs dynamiques?

 

A+

Posté(e)

Salut

 

Peut etre les versions suivantes permettrons d'aller plus loin avec les champs dynamiques?

C'est déjà le cas, mais dans dans le sens dont tu l'entends, avec une programmation et une utilisation des réacteurs.

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

  • 5 mois après...
Posté(e)

Bonjour

 

A la suite de cette discution, j'ai créer un bouton contenant en macro (ci-dessous) créant une variable pour chaque bloc que je voulais comptabiliser, un champ dynamique dans un tableau me donnait donc le nombre de chacun de mes blocs dès que je cliquais sur ce boton:

 

^C^C(setq my_var-compteur (- (sslength (ssget "_x" '((2 . "0-pb-compteur")))) 1))

(setq my_var-ba (- (sslength (ssget "_x" '((2 . "0-pb-ba")))) 1))

(setq my_var-disco (- (sslength (ssget "_x" '((2 . "0-pb-disconnecteur")))) 1))

(setq my_var-filtre (- (sslength (ssget "_x" '((2 . "0-pb-filtre")))) 1))

(setq my_var-sonde (- (sslength (ssget "_x" '((2 . "0-cv-sonde")))) 1))

(setq my_var-vanneqdt (- (sslength (ssget "_x" '((2 . "0-pb-vanne-quart-de-tour")))) 1))

(setq my_var-vannereg (- (sslength (ssget "_x" '((2 . "0-pb-vanne-reglage")))) 1))

(setq my_var-vannevol (- (sslength (ssget "_x" '((2 . "0-pb-vanne-volant")))) 1))

(setq my_var-ea (- (sslength (ssget "_x" '((2 . "0-pb-ea")))) 1))

(setq my_var-soupape (- (sslength (ssget "_x" '((2 . "0-pb-soupape")))) 1))

(setq my_var-mano (- (sslength (ssget "_x" '((2 . "0-pb-manometre")))) 1))

(setq my_var-thermo (- (sslength (ssget "_x" '((2 . "0-pb-thermometre")))) 1))

(setq my_var-car (- (sslength (ssget "_x" '((2 . "0-pb-car")))) 1))

(setq my_var-electrovanne (- (sslength (ssget "_x" '((2 . "0-pb-electrovanne")))) 1))

(setq my_var-vannepdi (- (sslength (ssget "_x" '((2 . "0-pb-vanne-pression-dif")))) 1))

(setq my_var-filtrecart (- (sslength (ssget "_x" '((2 . "0-pb-filtre-cartouche")))) 1))

(setq my_var-v3v (- (sslength (ssget "_x" '((2 . "0-pb-v3v")))) 1))

(setq my_var-mit-therm (- (sslength (ssget "_x" '((2 . "0-pb-mitigeur-thermos")))) 1))

(setq my_var-purgeur (- (sslength (ssget "_x" '((2 . "0-pb-purgeur")))) 1))

(setq my_var-vanne (- (sslength (ssget "_x" '((2 . "0-pb-vanne")))) 1))

(setq my_var-injprod (- (sslength (ssget "_x" '((2 . "0-pb-injection-produits")))) 1))

(setq my_var-vanne-nf (- (sslength (ssget "_x" '((2 . "0-pb-vanne-nf")))) 1))

(setq my_var-detendeur (- (sslength (ssget "_x" '((2 . "0-pb-detendeur")))) 1))

regen;

 

au bout de quelque temps certains blocs ont cessé d'être compter et je ne sais pas pourquoi

mais à l'exécution de la macro j'ai noté les erreurs suivantes sur les blocs concernés:

 

Commande: (setq my_var-vanne (- (sslength (ssget "_x" '((2 . "0-pb-vanne"))))

1))

; erreur: type d'argument incorrect: lselsetp nil

pourtant mon bloc existe voici ce que j'obtiens si je le liste:

 

 

REFERENCE DE BLOC Calque: "0"

Espace: Espace objet

Maintien = dd09

Nom du bloc: "0-pb-vanne"

Nom anonyme: "*U33"

en point, X= 37.1839 Y= 166.6466 Z= 0.0000

Facteur d'échelle X: 1.0000

Facteur d'échelle Y: 1.0000

Angle de rotation: 0

Facteur d'échelle Z: 1.0000

Mettre à l'échelle uniformément: Non

Autoriser la décomposition: Oui

 

D'avance, merci pour votre aide...

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é