salvanorigatore Posté(e) le 30 novembre 2012 Posté(e) le 30 novembre 2012 Salut, Au vu du message, je vois deux possibilités :- première possibilté, la DLL est sur un serveur, il faut alors modifier les autorisations (recherche CASPOL)ou, plus simple mettre la DLL en local.- deuxième possibilité (je penche plutôt vers celle là) il faut "débloquer" la DLL (fichier chargé depuis internet, voir ici. Bonjour gile,té génial !:DC’était en effet la deuxième possibilité : il fallait débloquer la dll comme tu l'avais déjà indiqué dans le sujet que tu à mis en référence. Merci encore et bonne journée.:wub: Ciao. " Celui qui a déplacé la montagne, c'est celui qui a commencé par enlever les petites pierres "
fabcad Posté(e) le 3 décembre 2012 Posté(e) le 3 décembre 2012 Bonjour Gile,Bonjour à tous, Ayant eu besoin de ta fonction instopo et l'ayant testé avant avec un petit fichier de points voici le message d'erreur produit à l'issue du test. Commande: instopoErreur: caractère lu incorrect (octal): 0 Je suis sur Windows XP avec AutoCAD MAP 2007. Merci de tes et (vos) lumières. FabricePOINTS.txt
bryce Posté(e) le 3 décembre 2012 Posté(e) le 3 décembre 2012 Bonjour, Apparemment c'est l'encodage de ton fichier txt qui est "bizarre".J'avais la même erreur, et après l'avoir ouvert dans Notepad++ et fait "Encodage > Convertir en ANSI" c'est passé sans problème... :huh: Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant
fabcad Posté(e) le 3 décembre 2012 Posté(e) le 3 décembre 2012 Merci Bryce Ton astuce a fonctionné, le fichier txt est généré depuis une requête autocad map en mode rapport. C'est à noter quelque part. Merci, Fabrice
-Olivier- Posté(e) le 3 décembre 2012 Posté(e) le 3 décembre 2012 Bonjour à tous, A propos d'incr.J'utilise fréquemment ce lisp pour numéroter mes schémas et plans - merci (gile) - :) .Dans ces plans, j'ai souvent du matériels en plusieurs exemplaires avec le même numéro. Pour cela, je suis obligé de sortir de la commande, copier mon étiquette autant de fois que nécessaire puis de reprendre la commande là où j'en étais. :huh: Ma méthode n'est peut-être pas la bonne, mais si une petite option répétée apparaissait au moment de chaque demande insertion, cela me serais utile.Ce lisp est trop complexe pour que je le modifie moi même. Il n'y a pas d'urgence, et si personne n'est intéressé, j'esserais de me créer une petite commande plus simple adaptée à mon besoin. Merci par avance, Olivier
(gile) Posté(e) le 3 décembre 2012 Auteur Posté(e) le 3 décembre 2012 Merci Bryce,Il y a effectivement un problème d'encodage depuis le "nouveau" CADxp. -Olivier-Tu peux toujours spécifier une valeur d'incrément de 0.Je ne me suis plus occupé de ce LISP depuis longtemps et j'ai fait quelque chose de "mieux" en .NET en téléchargement sur Autodesk Exchange Apps (en fait il n'est pas accessible aujourd'hui parce que j'ai fait une mise à jour et il semble qu'Autodesk ait des problèmes avec son site...). Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
-Olivier- Posté(e) le 3 décembre 2012 Posté(e) le 3 décembre 2012 Bonjour (gile),Pour mettre la valeur d'incrément à 0, il faut là encore arrêter la commande.Pour la version .net, seras t'elle utilisable sur la version 2011 ?Olivier
(gile) Posté(e) le 3 décembre 2012 Auteur Posté(e) le 3 décembre 2012 Pour la version .net, seras t'elle utilisable sur la version 2011 ?Hélas non, pour être validées par Autodesk pour Exchange Apps, les applications doivent utiliser le mode de chargement automatique AutoLoader apparu avec 2012.Mais je posterais peut-être une version ici... Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
salvanorigatore Posté(e) le 4 décembre 2012 Posté(e) le 4 décembre 2012 J'utilise fréquemment ce lisp pour numéroter mes schémas et plans - merci (gile) - :) .Dans ces plans, j'ai souvent du matériels en plusieurs exemplaires avec le même numéro. Pour cela, je suis obligé de sortir de la commande, copier mon étiquette autant de fois que nécessaire puis de reprendre la commande là où j'en étais. :huh: Ma méthode n'est peut-être pas la bonne, mais si une petite option répétée apparaissait au moment de chaque demande insertion, cela me serais utile. Bonjour,je fais comme Olivier, donc s'il y a une autre méthode (plus rapide) je suis preneur aussi ;) Ciao. " Celui qui a déplacé la montagne, c'est celui qui a commencé par enlever les petites pierres "
mateus Posté(e) le 11 décembre 2012 Posté(e) le 11 décembre 2012 (modifié) Salut Gile J'ai tester le LISP PLINE_BLOCKElle me donne seulement le périmètre et pas la surface (defun c:pline_block (/ AcDoc Space bloc nom ent obj ins op reg ech id long aire ref) (vl-load-com) (setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object)) Space (if (= (getvar "CVPORT") 1) (vla-get-PaperSpace AcDoc) (vla-get-ModelSpace AcDoc) ) ) (if (or (tblsearch "BLOCK" (setq bloc "Pline_block")) (findfile (setq bloc "Pline_block.dwg")) ) (progn ;; attribut "nom de la pièce" (if (not (setq nom (getname "Nom de la pièce"))) (setq nom "") ) (while (not (setq ent (car (entsel))))) (setq obj (vlax-ename->vla-object ent)) (if (= "AcDbPolyline" (vla-get-ObjectName obj)) (progn (if (not (setq ins (getpoint "\nSpécifiez le point d'insertion ou < Centre >: " ) ) ) (progn (if (= (vla-get-closed obj) :vlax-false) (progn (vla-put-closed obj :vlax-true) (setq op T) ) ) (setq reg (vlax-invoke space 'addRegion (list obj)) ins (vlax-get (car reg) 'Centroid) ) (if op (vla-put-closed obj :vlax-false) ) (vla-delete (car reg)) ) ) (if (not (vlax-ldata-get "Pline_block" "ech")) (vlax-ldata-put "Pline_block" "ech" 1) ) (if (not (setq ech (getreal (strcat "\nEntrez le facteur d'échelle <" (rtos (vlax-ldata-get "Pline_block" "ech")) ">: " ) ) ) ) (setq ech (vlax-ldata-get "Pline_block" "ech")) (vlax-ldata-put "Pline_block" "ech" ech) ) (setq id (vla-get-ObjectID obj) ;; Attribut surface (mm² -> m²) aire (strcat "%<\\AcObjProp Object(%<\\_ObjId " (itoa id) ">%).Area \\f \"%lu2%pr2%ct8[1e-006]\">%" ) ;; Attribut périmètre (mm -> m) long (strcat "%<\\AcObjProp Object(%<\\_ObjId " (itoa id) ">%).Length \\f \"%lu2%pr2%ct8[0.001]\">%" ) ) (setq ref (vla-InsertBlock Space (vlax-3d-point (trans ins 1 0)) bloc ech ech 1 (angle '(0 0 0) (trans (getvar 'ucsxdir) 0 (trans '(0 0 1) 1 0 T))) ) ) ;; attribution de leur valeur aux attributs (mapcar '(lambda (x y) (vla-put-TextString x y)) (vlax-invoke ref 'GetAttributes) (list nom aire long) ) (vla-regen AcDoc acActiveViewport) ) (alert "L'objet sélectionné n'est pas une polyligne.") ) ) (alert "Le bloc \"Pline_block\" est introuvable.") ) (princ) ) Modifié le 11 décembre 2012 par (gile) Ajout de bbcodes
mateus Posté(e) le 11 décembre 2012 Posté(e) le 11 décembre 2012 (modifié) Car je suis actuellement d'améliorer mon lisp, c'est petit programme qui sert à faire des zone de stockage sur un plan de chantier: on donne le nom et sa surface voici mon lisp: (defun c:stock() (command "-calque" "n" "stock" "co" 125 "stock" "ch" "stock" ""); Création du calque stockage (setq pt(getpoint "\nPoint d'origine de votre aire de stockage : ")); affecte a pt le point de départ (command "polylign" pt "la" 0.015 0.015);debut de la polyligne (while pt ; boucle (setq pt (getpoint "\nPoint suivant(Return pour FIN): ")); repete l'action (command pt) ) (setq xg 0) (setq yg 0) (setq nc 0) (setq n 0);les variables "Ox et Oy" sont associées aux coordonnées des points l'air de stockage. (setq nom (entlast)) (setq lt (entget nom)) (setq len (length lt)) (repeat len (setq p1 (car (nth n lt))) (if (= p1 10) (progn (setq xg (+ xg(cadr(nth n lt)))) (setq yg (+ yg(caddr(nth n lt)))) (setq nc(1+ nc)) ) ) (setq n(+ n 1)) ) (setq p1 (list(/ xg nc)(/ yg nc))) (setq txt(getstring "\nNom du matériau stocké: ")) (command "aire" "O" (entlast)) (setq surfa(getvar "AREA")) (command "texte" "m" p1 1 0 txt) (command "texte" "" (strcat "Surface : " (rtos surfa 2 2) " m2")) (command "calque" "ch" "0" "") ) Mon problème est de metre un champ a ma surface Modifié le 11 décembre 2012 par (gile) Ajout de bbcodes
(gile) Posté(e) le 11 décembre 2012 Auteur Posté(e) le 11 décembre 2012 Salut, S'il te plait, pour que le code soit plus lisible, utilise les bbcodes :[code] ici le code [/code]donne : ici le code Accessible via l'icône : Le plus simple pour intégrer un champ à un texte est d'exécuter la commande CHAMP (_FIELD), de formater le champ selon ses souhaits et de copier l'expression de champ (en bas de boite de dialogue).Il faut ensuite intégrer cette expression dans le LISP en prenant soin d'utiliser le caractère d'échappement (anti-slash : \) partout où il est nécessaire (devant les guillemets et les anti-slashes).Si le champ est un champ "Objet", il faut remplacer l'identifiant (ObjectId) de l'objet utilisé pour le test par une expression LISP qui retourne celui de l'objet utilisé par le LISP.Pour ce faire, le plus simple est d'utiliser Visual LISP (pas de panique, c'est assez simple).Au début du LISP, ajoute (vl-load-com) pour charger les fonctions Visual LISP.Dans la construction de la chaîne pour l'expression de champ, il faut utiliser une expression qui retourne l'ObjectId de l'entité sous forme de chaîne. Par exemple, dans ton LISP, remplace : (setq p1 (list(/ xg nc)(/ yg nc))) (setq txt(getstring "\nNom du matériau stocké: ")) (command "aire" "O" (entlast)) (setq surfa(getvar "AREA")) (command "texte" "m" p1 1 0 txt) (command "texte" "" (strcat "Surface : " (rtos surfa 2 2) " m2")) par : (setq p1 (list (/ xg nc) (/ yg nc))) (setq txt (getstring "\nNom du matériau stocké: ")) (setq util (vla-get-Utility (vla-get-ActiveDocument (vlax-get-acad-object)))) (command "texte" "m" p1 1 0 txt) (command "texte" "" (strcat "%<\\AcObjProp.16.2 Object(%<\\_ObjId " (if (vlax-method-applicable-p util 'GetObjectIdString) (vla-GetObjectIdString util (vlax-ename->vla-object nom) :vlax-false) (itoa (vla-get-ObjectId pl)) ) ">%).Area \\f \"%lu2%ps[surface : , m2]\">%" ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
mateus Posté(e) le 12 décembre 2012 Posté(e) le 12 décembre 2012 Merci, J'ai test ce que tu ma donner comme exemple, sa me donne une erreur: Commande: >%).Area \f "%lu2%ps[surface : , m2]">% Commande inconnue "AREA \F "%LU2%PS[sURFACE : , M2]">%". Appuyez sur F1 pour obtenir de l'aide. Commande: nil
(gile) Posté(e) le 12 décembre 2012 Auteur Posté(e) le 12 décembre 2012 Oupss !J'avais oublié un (strcat ...)J'ai corrigé l'exemple ci-dessus. PS1 : tu n'apprendras pas correctement le LISP si tu te contentes de faire des copier/coller sans essayer de comprendre le code que tu copies. PS2 : essaye de faire un effort pour l'orthographe. Si l'interpréteur LISP ne supporte aucune faute de syntaxe, certains lecteurs (dont moi) ne supportent pas beaucoup plus les fautes qui n'aident pas du tout à la compréhension des messages. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
mateus Posté(e) le 12 décembre 2012 Posté(e) le 12 décembre 2012 Merci Gile Oui c'est vrai, mais voilà je viens à peine de commencer le LISP et j'essai de comprende au mieux le language Et en se moment je suis sur un projet en licence pro projeteur CAO DAO,je dois faire un programme d'installation de chantier Donc je m'efforce a travailler sur le programme, essaié de comprendre ce que je peux comprendreMais je pense qu'il me faut adopter un méthodes de travaille, donc si je peux avoir un conseil de votre part sa m'aiderait a pouvoir mieux comprendre le LISP et pouvoir progrésser à la suite Je voudrais avoir de donne base au niveau du lisp, comment raisonner dans le lisp?
philsogood Posté(e) le 27 septembre 2013 Posté(e) le 27 septembre 2013 Hello,extraordinaire ce join3dpolyon se demande pourquoi il ne fait pas parti des commandes de base!!merci (gile) pour toutes tes créationsPhil Projeteur Revit Indépendant - traitement des eaux/CVC
philsogood Posté(e) le 8 octobre 2013 Posté(e) le 8 octobre 2013 Hellopetite remarque concernant edit_bloc qui jusqu'à présent fonctionnait à merveille, j'ai le message suivant qui s'affiche (aors que je sélectionne l'ensemble des éléments du fichier)Erreur: Erreur Automation Clé introuvableJe peux te faire suivre le fichier si tu le souhaites++Phil Projeteur Revit Indépendant - traitement des eaux/CVC
blade3650 Posté(e) le 17 janvier 2014 Posté(e) le 17 janvier 2014 Salut,Erreur automation avec ssd/ssm également.Je dois envoyé le DWG concerné ?Merci et à bientôt
PHILPHIL Posté(e) le 25 septembre 2014 Posté(e) le 25 septembre 2014 hello gilles est ce que chez toi ton lisp "ETCP" fonctionne correctement sous autocad 2015?( ca marchait sous autocad 2014 ) moi il fait bien un zoom bien sur la polyligne sélectionnée mais ne sélectionne pas les entites qui sont a l intérieur, puis il sort sans rien proposé est ce une histoire de "command" qu'il faut modifier en "command-s" ? (defun c:etcp (/ ent elst plst) (setvar "cmdecho" 0) (setq osm (getvar "osmode")) (setvar "osmode" 0) (and (setq ent (car (entsel))) (setq elst (entget ent)) (= "LWPOLYLINE" (cdr (assoc 0 elst))) (setq plst (mapcar (function (lambda (x) (trans (cdr x) ent 1))) (vl-remove-if-not (function (lambda (x) (= (car x) 10))) elst) ) ) (command "zoom" "ob" ent "") (command "_.stretch" "_cp") (mapcar 'vl-cmdf plst) (command "" "") (command "_.erase" ent "") ) (setvar "osmode" osm) (princ) ) merci bonne journée Phil FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
(gile) Posté(e) le 25 septembre 2014 Auteur Posté(e) le 25 septembre 2014 Salut, Remplacer :(mapcar 'vl-cmdf plst)par(mapcar 'command-s plst)devrait suffire. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
PHILPHIL Posté(e) le 25 septembre 2014 Posté(e) le 25 septembre 2014 hello Gilles désolé ca ne fonctionne pas, il y a bien un zoom, mais pas de sélection d'entités, et encore moins la demande d'un point a un autre a+ Phil FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
(gile) Posté(e) le 25 septembre 2014 Auteur Posté(e) le 25 septembre 2014 Je n'avais pas eu le temps de tester.Ceci semble fonctionner :(defun c:etcp (/ ent elst plst) (if (and (setq ent (car (entsel))) (setq elst (entget ent)) (= "LWPOLYLINE" (cdr (assoc 0 elst))) (setq plst (mapcar (function (lambda (x) (trans (cdr x) ent 1))) (vl-remove-if-not (function (lambda (x) (= (car x) 10))) elst ) ) ) ) (progn (command "_zoom" "_ob" ent "") (command "_.erase" ent "") (command "_.stretch" "_cp") (foreach p plst (command p)) (command "" "") ) ) (princ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
PHILPHIL Posté(e) le 25 septembre 2014 Posté(e) le 25 septembre 2014 hello Gilles Merciiiiiiiii ca marche impec(tu as de nouvelles applis en route pour EXCHANGE, ou des mises a jour peut etre ? ) a+ Phil FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
x_all Posté(e) le 29 septembre 2014 Posté(e) le 29 septembre 2014 Bonjour Serait il possible d'ajouter au lisp spécial sélection une fonction pour sélectionner par type de hachures svp ? Je reçois souvent des plans archi avec des motif personnalisé aux noms exotiques qui sont non éditables. La sélection rapide est bien sur utilisable, mais un petit "ssh" me faciliterai la vie. Merci pour ton temps... quelques trucs sur autocad
lecrabe Posté(e) le 29 septembre 2014 Posté(e) le 29 septembre 2014 Hello Dans l'onglet Objet avec une ligne du genre : (setq sel (ssget "_X" '((0 . "HATCH") (2 . "ANSI31"))))Tu "choppes" toutes les Hachures dont le nom est "ANSI31" ... et apres tu fais ce que tu veux car c'est ton jeu de selection precedent ... Tu peux ecrire N lignes de ce genre dans un Script et les supprimer ou les transferer sur un calque special ... Voir l'exemple de Script sur mon message : http://cadxp.com/topic/40134-calque-0/page__pid__224177__st__20#entry224177Ou je transfere sur un calque "0_A_VOIR" tous les objets du calque ZERO ... En attendant, une superbe modif de Gilles ... Bye, lecrabe Autodesk Expert Elite Team
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