pascal19 Posté(e) le 25 février 2009 Posté(e) le 25 février 2009 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éelmais voila ça ne marche pas... Il faudrait peut être la traduire en diesel mais je ne connais pas... Merci de votre aide
pascal19 Posté(e) le 10 mars 2009 Auteur Posté(e) le 10 mars 2009 "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
Patrick_35 Posté(e) le 10 mars 2009 Posté(e) le 10 mars 2009 Salut Ta formule fonctionne en lisp, pas en diesel. @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
pascal19 Posté(e) le 17 mars 2009 Auteur Posté(e) le 17 mars 2009 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éspour avoir une idée de la synthaxe mais je ne trouve pas... Par pitié aidez-moi...
bonuscad Posté(e) le 17 mars 2009 Posté(e) le 17 mars 2009 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
pascal19 Posté(e) le 17 mars 2009 Auteur Posté(e) le 17 mars 2009 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+
Patrick_35 Posté(e) le 17 mars 2009 Posté(e) le 17 mars 2009 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 PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
pascal19 Posté(e) le 27 août 2009 Auteur Posté(e) le 27 août 2009 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 pourquoimais à 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.0000Facteur d'échelle X: 1.0000Facteur d'échelle Y: 1.0000Angle de rotation: 0Facteur d'échelle Z: 1.0000Mettre à l'échelle uniformément: NonAutoriser la décomposition: Oui D'avance, merci pour votre aide...
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