Clément.a Posté(e) le 17 décembre 2012 Posté(e) le 17 décembre 2012 Bonjour à tous! Voila j'ai creer un lisp qui permet d'inserer différent type de bloc. J'ai environ 200 wbloc qui sont répértorier dans différent dossier ( une dixaine ). Et il possible d'indiquer le chemin de recherche des dossiers dans le lisp pour éviter de devoir tous les metres dans les options -> fichier etc. Merci Cordialement
krunch Posté(e) le 17 décembre 2012 Posté(e) le 17 décembre 2012 Oui tu peux entrer le chemin du bloc, notamment avec la commande _-insert (ou -inserer) et avec la méthode InsertBlock ..
Clément.a Posté(e) le 17 décembre 2012 Auteur Posté(e) le 17 décembre 2012 Ah oui!! j'avais essayé ce matin mais sa marchais pas alors je me suis dit que c'était pas possible donc j'ai arreter, j'en conclu donc que je devais avoir des probleme de connexion au réseau. Merci beaucoup. Bonne fin de journée.
Fraid Posté(e) le 17 décembre 2012 Posté(e) le 17 décembre 2012 Bonjour, Tu peux utiliser les fonction vla-get-supportpath et vla-put-supportpath regarde ici https://github.com/Fraiddd
Clément.a Posté(e) le 18 décembre 2012 Auteur Posté(e) le 18 décembre 2012 Bonjour, Je vais faire avec la commande "_-insert" c'est ce qui me parait le plus approprié. Or j'ai des petits souci avec le nom du chemin d'accès.Voila suivant le nom de mon fichier j'aimerais lui donner un chemin d'acces différent exemple :(defun c:k () ;la variable name a été affecté préalablement à une chaine de caractere ; cheminint est le chemin intermédiaire (cond ((= name "VPM") (setq cheminint "K:\AUTOCAD\Tuyauterie\VPM\")) ((= name "VP" ) (setq cheminint "K:\AUTOCAD\Tuyauterie\VP\")) ((= name "VPD" ) (setq cheminint "K:\AUTOCAD\Tuyauterie\VPD\")) ((= name "VO" ) (setq cheminint "K:\AUTOCAD\Tuyauterie\VO\")) ((= name "VB" ) (setq cheminint "K:\AUTOCAD\Tuyauterie\VB\")) ) ;rname est le nom réel du fichier que je dois integrer ;chemin est le chemin final (setq chemin (strcat chemin name)) (command "_-insert" chemin (getpoint "\nDonné le point d'insertion : ") "" "");la j'aimerai qu'il me cherche le ;fichier dans le bon répertoire. Le souci est que la variable cheminint ne prend pas les antislash j'ai essayé de les doublé de les précéder de guillements enfin j'ai bidouillé mais j'ai pas compris comment ça marche pour qu'il les affecte corrrectement à la variable Pour ceux qui se demande pourquoi : je pourai faire en ajoutant des chemins de recherche de fichier support dans les options mais il y a beaucoup de chemin à ajouter et ceci une fois l'outil terminé il fait le metre sur le poste de chaque déssinateur de l'entreprise. Donc sa facilitera la tache pour tout le monde et diminura les manips pour le metre en place. Cordialement
Clément.a Posté(e) le 18 décembre 2012 Auteur Posté(e) le 18 décembre 2012 C bon j'ai trouvé y faut juste les doublé et sa marche Je pensais pas que même si les antislash apparaisait doublé quand on renvoyais la variable autocad allais retrouvé le chemin avec la command _-insert mais apparement si y dois comprendre comme si y en avait qu'un! merci
krunch Posté(e) le 18 décembre 2012 Posté(e) le 18 décembre 2012 En fait l'anitislash est un caractère spécial qui doit être précédé d'un antislash (donc doublé), c'est la même chose avec le guillemet qui s'écrit "\"". A part ça dans ton exemple il n'y a donc pas besoin du cond (strcat cheminint name) suffit .. et pas besoin d'antislash final il me semble.
Clément.a Posté(e) le 18 décembre 2012 Auteur Posté(e) le 18 décembre 2012 OK merci je savais pas tous ça!! Si j'ai besoin du cond car le nom du fichier est du genre VPM_PN20_DN200_VC (qui est apellé rname dans le code) et name c'est seulement VPM mais dans le code que j'ai ecrit je me suis trompé c'est pas tout a fait ça voila ce que sa donne :(defun wbk () (cond ((= name "VPM") (setq cheminint "K:\\AUTOCAD\\Tuyauterie\\VPM\\")) ((= name "VP" ) (setq cheminint "K:\\AUTOCAD\\Tuyauterie\\VP\\")) ((= name "VPD" ) (setq cheminint "K:\\AUTOCAD\\Tuyauterie\\VPD\\")) ((= name "VO" ) (setq cheminint "K:\\AUTOCAD\\Tuyauterie\\VO\\")) ((= name "VB" ) (setq cheminint "K:\\AUTOCAD\\Tuyauterie\\VB\\")) ) (setq chemin (strcat cheminint rname)) (command "_-insert" chemin (getpoint "\nDonné le point d'insertion : ") "" "" "" ) ) Du coup la variable chemin donne K:\\AUTOCAD\\Tuyauterie\\VPM\\VPM_PN20_DN200_VC si le nom du fichier name est VPM_PN20_DN200_VC. Voilou Merci beaucoup.
krunch Posté(e) le 18 décembre 2012 Posté(e) le 18 décembre 2012 Bon, j'ai peut-être pas tout compris mais en tout cas à la place de ce dernier code tu peux écrire directement :(setq chemin (strcat "K:\\AUTOCAD\\Tuyauterie\\" name "\\" rname)) Et aussi : "\nDonnez le point d'insertion : " (ou Spécifiez) même si ça ne gène pas l'exécution du Lisp ..
Clément.a Posté(e) le 18 décembre 2012 Auteur Posté(e) le 18 décembre 2012 je l'avais pas vu comme ça c'est en effet plus court merci et désolez pour la faute.
VDH-Bruno Posté(e) le 18 décembre 2012 Posté(e) le 18 décembre 2012 (modifié) Salut, Et il possible d'indiquer le chemin de recherche des dossiers dans le lisp pour éviter de devoir tous les metres dans les options -> fichier etc. Sans aller à déclarer tous tes dossiers dans les chemins de recherche fichiers des fichiers support, tu peux au moins déclarer la partie commune de ton arborescence c.a.d. "K:\\AUTOCAD\\Tuyauterie\\" Puis définir dans un fichier ou dans ton lisp une liste associative du type ((nom-de-blk1 chemin-relatif1) ((nom-de-blk2 chemin-relatif2) …) Sur le modèle que tu donnes en exemple on pourrait faire ceci :(setq chemin-relatif '(("VPM" . "VPM\\") ("VPM2" . "VPM\\") ("VPD" . "VPD\\") ("VO" . "VO\\") ("VB" . "VB\\"))) Pour récupérer le chemin relatif du bloc "VPM" contenu dans une variable blk, il suffit de faire ceci :_$ (cdr (assoc blk chemin-relatif)) "VPM\\" Au moyen de la fonction findfile tu retrouve le chemin complet de ton fichier_$ (findfile (strcat (cdr (assoc blk chemin-relatif)) blk ".dwg")) "K:\\AUTOCAD\\Tuyauterie\\VPM\\VPM.dwg" Ce qui te permettras de lancer ta fonction d’insertion de la façon suivante :_$ (command "_-insert" (findfile (strcat (cdr (assoc blk chemin-relatif)) blk ".dwg")) (getpoint "\nDonnez le point d'insertion : ") "" "" "" ) nil Sans avoir à coder en dur l’intégralité de tes chemins dans ton fichier lisp ;) CordialementA+ -----------------------------------------------------------------------------------------------Edit : A la relecture, j’édite ma réponse car j’ai été un peu vite sans tenir compte des spécificités propre à la commande insert qui intègre déjà une recherche de dwg dans les répertoires de fichier support de ce fait la fonction findfile est superflu ainsi que le fait de spécifier l’extension .dwg. En résumer si "K:\\AUTOCAD\\Tuyauterie\\" est déclaré dans tes chemins de recherche d’AutoCAD, il suffit de renseigner la suite du chemin et le nom du fichier à renseigner. En reprenant l’exemple précédent cela donnerai ceci :_$ (command "_-insert" (strcat (cdr (assoc blk chemin-relatif)) blk) (getpoint "\nDonnez le point d'insertion : ") "" "" "" ) nil Désolé pour la confusionA+ Modifié le 18 décembre 2012 par VDH-Bruno Apprendre => Prendre => Rendre
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