Aller au contenu

Messages recommandés

Posté(e)

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

Posté(e)

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.

Posté(e)

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

Posté(e)

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

Posté(e)

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.

Posté(e)

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.

Posté(e)

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 ..

Posté(e) (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 ;)

 

Cordialement

A+

 

 

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

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 confusion

A+

Modifié par VDH-Bruno

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é