Aller au contenu

Tagazin

Membres
  • Compteur de contenus

    8
  • Inscription

  • Dernière visite

Tagazin's Achievements

Newbie

Newbie (1/14)

0

Réputation sur la communauté

  1. c'est quoi une police de forme ?
  2. Merci Gile, Après rajout d'une parenthèse manquante à la fin, le lisp fonctionne. Mais je suis désolé, mais aucun des deux répond à mon problème. Je sèches, je ne sais pas comment faire, et à quel niveau il faut attaquer le fichier. J'ai toujours cette maudite question au démarrage. http://www.favoriscad.com/Photos/PrbAcad.jpg A+.
  3. Merci Lili2006. J'ai encore un message d'erreur : ; erreur: type d'argument incorrect: VLA-OBJECT nil Merci encore pour votre aide.
  4. Salut (gile), Le premier marche bien. Mais ne répond pas à mon problème car j'ai toujours cette maudite question au démarrage du fichier. http://www.favoriscad.com/Photos/PrbAcad.jpg Là, je répond annulé et le fichier s'ouvre. Pour le 2ème lisp, je n'ai pas testé car j'ai un problème, AutoCAD me retourne : ; erreur: no function definition: VLA-GET-PREFERENCES Merci. A+.
  5. Merci pour ta réponse, c'est super sympa. En fait, c'est vrais que je confond un peu les 2, et je m'en excuse. C'est au niveau des styles de textes que ça coince sur mes fichiers. Mais je vais tester tes lisp et je te dirai lequel est adéquate. Merci. A+.
  6. Bonjour, Et merci de me répondre. Oui c'est ça c'est la 2ème. En fait je reçois des plans d'archi qui ont été fait sous un autre soft. Il faudrait donc tout convertir en Romand (par exemple) afin que l'on puisse tout purger, même les éléments imbriqués. J'espère que je me suis bien exprimé... Merci encore.
  7. Bonjour à Tous, J'ai souvent le même problème, lorsque j'ouvre des fichiers, AutoCAD me demande de remplacer une police par une autre. Nous avons tous été confrontés à ce problème, surtout dans le monde du BTP. Car les Archi utilisent des Police qu'AutoCAD ne connait. Je penses qu'il serait utile de créer un lisp pour palier à ce problème. Il faudrait que ce lisp recherche tous les TXT, MTXT, ATTRIB, etc. Bref tout ce qui est "texte" et même dans éléments imbriqués. Puis il nous demanderait de piocher dans la liste de Police AutoCAD pour tout convertir en cette dernière. Et purger ainsi tous les styles qui ne sont plus utilisés. Mais voilà, j'ai un problème, pour moi, c'est plus facile à dire qu'à faire ! J'ai bien essayé de m'inspirer du lisp "EXP.LSP V1.01" de Patrick_35. Mais, il est trop fort pour moi, car le Visual Lisp je m'y connais encore moins bien que le lisp. J'en appel donc à toute la communauté : "Ah l'aide !" Merci à Tous.
  8. Bonjour à tous, Je voudrais sélectionner des blocs à la souris et extraire les valeurs d'attributs qu'il contiennent. J'ai fait un premier lisp, mais il ne me plait pas : (defun c:imp () (alert "Sélectionnez les étiquettes des câbles composant le tronçon") (setq Select (ssget)) (setq NbrSel (sslength Select)) ;cpte le nbre de sélection (setq NbSel (itoa NbrSel)) (setq compt 0) (setq LGT 0) (setq P1T 0) (setq P2T 0) (setq P3T 0) ;;; début while 0 (while (< compt NbrSel) (setq b (ssname Select compt)) (setq b2 (ssname Select compt)) (setq latt1 (cons latt latt1)) ;lst étiquettes attrib (setq latt nil) (setq att2 nil) ;;; début while-1 (while (/= att2 "SEQEND") (setq b2 (entnext b2)) (setq x2 (entget b2)) (setq att2 (cdr (assoc 0 x2))) (setq att20 (cdr (assoc 1 x2))) (setq latt21 (cons att20 latt21))) ;;; fin while-1 (setq LG (strcat (nth 4 latt21))) ; Extraction de "LG" (setq LG (atof LG)) (setq LGT (+ LG LGT)) (setq P1 (strcat (nth 3 latt21))) ; Extraction de "P1" (if (= P1 "-") (setq P1 0) (progn (setq NBR1 (- (strlen P1) 2)) (setq P1 (substr P1 1 NBR1)) (setq P1 (atof P1)) ) ) (setq P1T (+ P1 P1T)) (setq P2 (strcat (nth 2 latt21))) ; Extraction de "P2" (if (= P2 "-") (setq P2 0) (progn (setq NBR2 (- (strlen P2) 2)) (setq P2 (substr P2 1 NBR2)) (setq P2 (atof P2)) ) ) (setq P2T (+ P2 P2T)) (setq P3 (strcat (nth 1 latt21))) ; Extraction de "P3" (if (= P3 "-") (setq P3 0) (progn (setq NBR3 (- (strlen P3) 2)) (setq P3 (substr P3 1 NBR3)) (setq P3 (atof P3)) ) ) (setq P3T (+ P3 P3T)) (setq latt21 nil) (setq compt (+ 1 compt))) ;;; fin while 0 (setq LGT (rtos LGT 2 2)) (setq P1T (rtos P1T 2 2)) (setq P2T (rtos P2T 2 2)) (setq P3T (rtos P3T 2 2)) (princ "\n...") (princ (strcat "\n...Vous avez sélectionnez : " NbSel " blocs")) (princ (strcat "\n...Longueur totale du tronçon : " LGT "m")) (if (= P1T "0.00") (progn (setq P1T "-") (princ (strcat "\n...Totale 1 : " P1T)) ) (princ (strcat "\n...Totale 1 : -" P1T "dB")) ) (if (= P2T "0.00") (progn (setq P2T "-") (princ (strcat "\n...Totale 2 : " P2T)) ) (princ (strcat "\n...Totale 2 : -" P2T "dB")) ) (if (= P3T "0.00") (progn (setq P3T "-") (princ (strcat "\n...Totale 3 : " P3T)) ) (princ (strcat "\n...Totale 3 : -" P3T "dB")) ) (Princ) ) (c:imp) Ce qui ne me plait pas c'est : ;;; début while-1 (while (/= att2 "SEQEND") (setq b2 (entnext b2)) (setq x2 (entget b2)) (setq att2 (cdr (assoc 0 x2))) (setq att20 (cdr (assoc 1 x2))) (setq latt21 (cons att20 latt21))) ;;; fin while-1 (setq LG (strcat (nth 4 latt21))) ; Extraction de "LG" (setq LG (atof LG)) (setq LGT (+ LG LGT)) (setq P1 (strcat (nth 3 latt21))) ; Extraction de "P1" .... (setq P2 (strcat (nth 2 latt21))) ; Extraction de "P2" .... (setq P3 (strcat (nth 1 latt21))) ; Extraction de "P3" Car si je sélectionne un mauvais bloc ça plante et puis il faut que les attributs restent dans le bon ordre, sinon cela va me faire des erreurs de calculs sur les valeurs extraites. Pour reconnaitre les bons attributs, je préfairerais un truc du genre : ; retourne dans EntTamp la liste des données du numéro Cpt1 de TouBloc (setq EntTamp (entget (ssname TouBloc Cpt1))) (setq Cpt1 (+ Cpt1 1)) ; incrémente le compteur de blocs (if (= (cdr (assoc 0 EntTamp)) "INSERT") ; si l'entité est un bloc (progn (setq Ent_dansBloc 1) ; Drapeau attribut (while Ent_dansBloc ; tant qu'il y a des entités dans le bloc ; Nom de l'entité suivante dans le bloc (setq NomEnt (entget (entnext (cdr (assoc -1 EntTamp))))) (if (= (cdr (assoc 0 NomEnt)) "ATTRIB") ; si cette entité est un attribut (progn (if (= (cdr (assoc 2 NomEnt)) "P_GSM") ; si le nom de l'étiquette... progn (setq NomAtt (assoc 1 NomEnt)) ; valeur de l'attribut (associée à 1) (setq P1 NomAtt) (setq P1 (cdr P1)) ; récupération de la valeure de l'attribut ) ; progn ) ; if (if (= (cdr (assoc 2 NomEnt)) "P_DCS") ; si le nom de l'étiquette... progn (setq NomAtt (assoc 1 NomEnt)) ; valeur de l'attribut (associée à 1) (setq P2 NomAtt) (setq P2 (cdr P2)) ; récupération de la valeure de l'attribut ) ; progn ) ; if (if (= (cdr (assoc 2 NomEnt)) "P_UMTS") ;si le nom de l'étiquette... progn (setq NomAtt (assoc 1 NomEnt)) ; valeur de l'attribut (associée à 1) (setq P3 NomAtt) (setq P3 (cdr P3)) ; récupération de la valeure de l'attribut ) ; progn ) ; if ) ; progn ) ; if (if (= (cdr (assoc 0 NomEnt)) "SEQEND") ; si on atteint la fin du bloc (setq Ent_dansBloc nil) ) (setq EntTamp NomEnt) ) ; retour à while ) ; progn ) ; if retour s'il y a encore des blocs Mais je n'arrive pas à faire l'assemblage. Merci pour votre aide.
×
×
  • 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é