Aller au contenu

importation style de côte


Messages recommandés

Invité pleche.damien
Posté(e)

Bonjour, je veux récupérer un style de côte que j'ai dans un notre dessin qui se nome:

[surligneur] gabaritcote.dwg[/surligneur]

se DWG est placé dans se chemin de parcours:

[surligneur] L:\\PLECHE Damien PROJET FONDATION\\WBLOC.gabaritcote.dwg[/surligneur] ; j'ai rajouté 1 antislash devant chaque antislash.

 

Et le nom du style de côte que je veux importer se nôme: [surligneur] 1-20[/surligneur]

 

Il me marque l'érreur suivante:

 Erreur: Erreur Automation. Aucune description n'a été entrée.

 

Comment faire???? :casstet:

 

Ci-joint ma routine:

 

 

(defun Ouvrir_dessin_dbx(dwg / dbx)    
(vl-load-com) 
(if (< (atoi (substr (getvar "ACADVER") 1 2)) 16)
(setq dbx (vlax-create-object "ObjectDBX.AxDbDocument"))
(setq dbx (vlax-create-object (strcat "ObjectDBX.AxDbDocument." (substr (getvar "ACADVER") 1 2))))
)
(vla-open dbx dwg)
dbx
)




;(defun c:qqq ()
((vl-load-com)
;L:\PLECHE Damien PROJET FONDATION\WBLOC
(setq Dbx (ouvrir_dessin_dbx "L:\\PLECHE Damien PROJET FONDATION\\WBLOC.gabaritcote.dwg"))

(vla-CopyObjects Dbx (vlax-safearray-fill 

(vlax-make-safearray vlax-vbObject '(0 . 0))

(list (vla-item (vla-get-dimstyles Dbx) "1-20"))

)
(vla-get-dimstyles (vla-get-activedocument (vlax-get-acad-object)))
)
 (vlax-release-object dbx)
)

 

 

Merci pour vos réponse

PS: je débute en lisp

Invité pleche.damien
Posté(e)

DSL je réctifi immédiatement ma routine, je voulais écrire

 

 (setq Dbx (ouvrir_dessin_dbx "L:\\PLECHE Damien PROJET FONDATION\\WBLOC\\gabaritcote.dwg"))

 

a la place de

 

 

(setq Dbx (ouvrir_dessin_dbx "L:\\PLECHE Damien PROJET FONDATION\\WBLOC.gabaritcote.dwg"))

 

[surligneur] voila il me mette fonction incorrecte mintenant[/surligneur]!!!!

 

Posté(e)

Si un humain courageux peut arriver à te lire et comprendre ce que tu dis malgré une orthographe abominable, il n'en va pas de même pour du code passé à un interpréteur : là, aucune faute n'est acceptable.

 

Comme certains, tu sembles vouloir courir avant de savoir marcher et copies/colles des routines (sans en citer l'auteur) et/ou des extraits de codes sans certainement les avoir compris, sans, en tout cas dans cet exemple avoir compris certains fondamentaux de la syntaxe du LISP.

 

Extrait de Eléments de syntaxe AutoLISP :

l’interpréteur recherche la définition de la fonction (premier terme de la liste). Si cette définition n’est pas trouvée, un message d’erreur est retourné

Les arguments pouvant être aussi des applications de fonction, celles-ci seront évaluées tour à tour et les résultats retournés à l’endroit même de chaque expression.

L’évaluation procède de façon récursive en réduisant chaque appel de fonction à une expression autoévaluante à partir des expressions les plus imbriquées.

 

Ton code commence comme ceci :

((vl-load-com) ...)

Comme dit dans les citations ci-dessus, l'interpréteur cherche une fonction dès qu'il lit une parenthèse ouvrante et trouve : (vl-load-com).

Il évalue donc l'expression et retourne le résultat à l'endroit de l'appel de fonction : (vl-load-com) -tout comme (princ)- retourne un symbole vide (aucun caractère).

C'est donc pour ce symbole vide que l'interpréteur va chercher une définition de fonction. Évidemment, il ne va pas en trouver et renvoie donc le message d'erreur :

; erreur: fonction incorrecte:

où le blanc après les deux point correspond au nom de la fonction (vide).

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

Invité pleche.damien
Posté(e)

Tu oubli Gile que je débute en lisp et comme tu dis si bien

 

 De chacun selon ses moyens,
À chacun selon ses besoins

 

c'est vrai que j'ai trouvé cette routine sur se forum mais je vais pas en faire un patacaisse

parsque c'est un peut le principe des forums de farfouiller partout NON!!!

 

bon, merci pour tes explication tout de même, même si sa ne m'avance pas beaucoup

 

(tu oubli que j'ai seulement une ceinture orange malgré ma soif d'aprendre)

Posté(e)

Ne t'énerves pas, et si tu lis calmement mon message, tu y trouveras l'explication de ton erreur. Relis à partir de "Ton code commence comme ceci...", c'est là qu'est l'erreur.

 

Les mêmes choses dites autrement :

Toute expression LISP est un appel de fonction dont la syntaxe est :

(fonction [arguments ...])

- Elle commence donc toujours* par une parenthèse ouvrante et se termine par une parenthèse fermante.

- La parenthèse ouvrante est toujours suivie d'un symbole (ou d'une autre expression) qui est lié à une fonction (native ou définie par l'utilisateur ou encore une expression lambda).

- Suivent ensuite les arguments requis par la fonction : parfois aucun (ce qui est symbolisé par les crochets) parfois un ou plusieurs. Ces arguments peuvent, bien sûr, être d'autres expressions.

 

Quand tu modifies la routine que tu as copié en mettant en commentaire : (defun c:qqq () et en le remplaçant simplement par une parenthèse ouvrante, tu modifies complètement la structure du code.

Ce qui était un appel de la fonction defun devient un appel du résultat de l'expression (vl-load-com), à savoir 'rien' (en fait un symbole vide).

 

Oui, j'ai bien compris que tu étais débutant et c'est pour ça que je reprends à partir des fondamentaux de la syntaxe LISP.

Si tu copies des extraits de code et que tu les modifies sans faire attention aux conséquences de ces modifications il y a peu de chance que ça fonctionne. Il faut que tu comprennes ce que tu fais et pourquoi tu le fais.

 

Te donner directement le code corrigé ne t'aiderait aucunement dans ton apprentissage : c'est en comprenant et en corrigeant ses erreurs qu'on apprend.

 

* l'apostrophe devant une liste de données : '(1 2 3) est une fausse exception. Il s'agit d'une abréviation de l'expression (quote (1 2 3)) qui est bien un appel de fonction.

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

Posté(e)

Coucou

 

que je débute en lisp

décidément on va passer pour des rabat-joie, (Gile) et moi

 

puisque tu débutes, ne mets pas la barre si haut

donne toi un objectif simple et réalisable

 

[surligneur] et surtout le copier-coller est tabou. [/surligneur]

 

pour ce qui est de ta demande, elle n'est pas vraiment justifiée

il te suffit d'insérer ton dessin gabaritcote dans ton dwg

illico presto tu le supprimes

et ton style de cotation se trouve copié

(s'il n'existe pas de définition homonyme dans le dwg d'accueil)

 

pour mémoire, car il n'y a pas qu'AutoCAD dans la vie

la véritable orthographe est pataquès en lieu et place de patacaisse

rien à voir avec la pataphysique ou les patapoufs

 

Amicalement

Posté(e)

Bonjour,

 

bon, merci pour tes explication tout de même, même si sa ne m'avance pas beaucoup

 

Au contraire cela t’avance énormément c’est même fondamental de comprendre comment fonctionne l’évaluation d’une fonction Lisp, personnellement c’est ce type d’explication qui m’a permis de décoller dans ma compréhension du Lisp, bien plus que l’emploie de telle ou telle fonction plus ou moins sophistiqué..

 

 

Pour en revenir à ton problème lorsque l’on débute la règle doit être de faire simple pour aboutir et comprendre. Sais-tu que si tu insères ton dessin gabaritcote.dwg dans ton dessin courant tu vas insérer également les styles de cotes qu’il contient.

 

Donc si tu fais :

 (command "_insert" "L:\\PLECHE Damien PROJET FONDATION\\gabaritcote.dwg" '(0.0 0.0) "" "" "" )

 

Cela devrait également bien marché (à la condition que ton fichier ne contienne que des définitions de style de cote).

 

Sinon pour une remarque d’ordre plus général, une bonne utilisation des fichiers gabarit (dwt) permet de faire gagner beaucoup de lignes de code.

A+

 

-------------------------------------------------------------

Edit

Oupss, désolé pour l’écho je n’avais pas réactualisé la page et je n’avais pas vu les réponses précédentes.

 

 

[Edité le 23/8/2011 par VDH-Bruno]

Apprendre => Prendre => Rendre

Invité pleche.damien
Posté(e)

Oui pourcoi faire compliqué quand on peut faire simple:

 

j'utilise donc tas méthode Bruno

 

 (command "_insert" "J:\\documents\\formation licence cao dao\\pleche damien projet fondation\\wbloc\\gabaritcote.dwg" '(0.0 0.0) "" "" "" )

 

Et j'insert cette ligne sup. pour charger ma côte automatiquement:

 

 (command "-dimstyle" "R" "1-20") 

 

Merci

Posté(e)

Bonsoir,

 

j'utilise donc tas méthode Bruno

 

C’est une méthode parmi d’autres ( d’ailleurs didier l’avait donné avant), celle que tu envisageais au départ me semblant encore un peu ardu pour un début.

 

Néanmoins je te conseil de ne pas faire l’impasse sur les précieux conseils de (gile) car si tu ne veux pas macroter éternellement avec command, il te faudra bien en passer par un peu de théorie Lispienne.

 

A+

(Ps : Perso j’utilise plutôt les gabarits et les palettes d’outils pour ce type de besoin).

 

Apprendre => Prendre => Rendre

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é