-
Compteur de contenus
406 -
Inscription
-
Dernière visite
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par chris_mtp
-
Bonjour, J'ai trouvé ce lisp de lovecraft à propos de l'export des sommets d'une polyligne 3d. ;Programme pour creer un listing en cliquant une polyligne ; le 30 mai 2006 ;***************************************************************** (defun c:xypoly () (setq ent (car (entsel "\nCliquez une polyligne :"))) (setq bdent (entget ent)) (setq typent (cdr (assoc 0 bdent))) (if (= typent "LWPOLYLINE") (progn (setq nomfic "C:/XYPOLY2D.txt") (setq fic (open nomfic "w")) (setq i 0) (repeat (length bdent) (setq entit (nth i bdent)) (setq codeentit (car entit)) (if (= codeentit 10) (progn (setq xentit (car (cdr entit))) (setq yentit (cadr (cdr entit))) (setq xyentit (strcat (rtos xentit 2 3) " " (rtos yentit 2 3))) (write-line xyentit fic) );fin du progn );fin du if (setq i (+ i 1)) );fin du repeat );fin du progn );fin du if (if (= typent "POLYLINE") (progn (setq nomfic "C:/XYPOLY3D.txt") (setq fic (open nomfic "w")) (setq i 0) (setq ent1 (entnext ent)) (setq bdent1 (entget ent1)) (setq typent1 (cdr (assoc 0 bdent1))) (while (= typent1 "VERTEX") (setq code10 (cdr (assoc 10 bdent1))) (setq xentit (car code10)) (setq yentit (cadr code10)) (setq zentit (caddr code10)) (setq xyzentit (strcat (rtos xentit 2 3) " " (rtos yentit 2 3) " " (rtos zentit 2 3))) (write-line xyzentit fic) (setq ent1 (entnext ent1)) (setq bdent1 (entget ent1)) (setq typent1 (cdr (assoc 0 bdent1))) );fin du while );fin du progn );fin du if (close fic) );fin du defun c:xypoly Serait il possible de le modifier de façon à créer un fichier txt avec dans l'ordre les colonnes suivantes : (n étant le numéro du sommet) 1) Numéro de sommet 2) Distance partielle entre le sommet n et n-1 3) Distance cumulée (calculé à partir du sommet 1 au sommet n) 4) Z 5) X 6) Y J'essaie de modifier depuis un jour ce lisp à mes besoins mas chaque fois j'ai ce type de réponse ; erreur: type d'argument incorrect: streamp nil Merci d'avance pour votre aide Chris_mtp
-
Tu vois ca fait depuis un certain moment 8 ans maintenant que je travaille avec autocad et je ne connaissais pas du tout cette fonction comme quoi on en apprend tous les jours. MErci gile chris_mtp
-
Bonjour à tous, Je ne crois pas que c'est possible mais bon je vous pose la question quand même. 2 blocs ayant le même nom et appartenant au même calque inséres dans un plan dwg autocad ne peuvent avoir qu'une et une seule couleur unique. Il n'est pas possible par exemple d'avoir l'un en couleur bleu et l'autre en vert. et ceci quel que soit le moyen utilisé. sauf bien sur de faire un autre bloc mais de nom différent. Je ne suis pas fou quand même. chris_mtp
-
C'est sur qu'il est plus simple parfois de passer par des macros que du lisp mais je me suis mis à commencer avec le lisp, je commence un peu à le comprendre. Merci tout de même. C'est bon j'ai pu réaliser un lisp perso qui me lance la commande mesurer et m'insérer un bloc 3d suivant la longueur de la poly3d sélectionnée. Chris_mtp
-
mERCI
-
MERCI Bien Bonuscad. cA marche parfaitement J'ai pu même le lisp pour l'appliquer sur une autre couche et compléter ma biblio d'hachures automatique. Pour le "_X", ca permet de tout sélectionner les entités d'un même calque. C'est pas mal. Par contre, j'ai une autre question. Pour les clotures par exemple ou les grillages, je dois en fait insérer un bloc 3d sur une polyligne 3d ouverte ou fermée comme en fait la commande mesurer ou diviser d'autocad mais sans devoir spécifier le nom du bloc ni la distance entre chacun des blocs. Je vasi cherché sur Internet si je peux trouver un truc. Merci quand meme pour ton aide. Chris_mtp.
-
Bonjour à tous, j'ai ce lisp : (defun c:H_DAL (/ s_osm pt ss) (setq s_osm (getvar "OSMODE")) (if (< s_osm 16385)(setvar "OSMODE" (+ s_osm 16384))) (setq clay (getvar "CLAYER")) (setvar "CLAYER" "HACHURES") (if (setq pt (getpoint "\nSpécifiez le point interne ou : ")) (command "_-hatch" "_P" "AR-CONC" "0.02" "0" "_A" "_A" "_Y" "_H" "_Y" "" "_D" "_B" pt "") (if (setq ss (ssget '((-4 . " (-4 . " (0 . "POLYLINE") (-4 . "&") (70 . 1) (-4 . "<") (70 . 16) (-4 . "AND>") (-4 . " (0 . "LWPOLYLINE") (-4 . "&") (70 . 1) (-4 . "AND>") (-4 . " (0 . "MLINE") (71 . 3) (-4 . "AND>") (0 . "CIRCLE") (0 . "3DFACE") (-4 . " (0 . "ELLIPSE") (41 . 0) (42 . 6.283185307179586) (-4 . "AND>") (-4 . " (0 . "SPLINE") (-4 . "&") (70 . 1) (-4 . "AND>") (0 . "REGION") (-4 . "OR>") ) ) ) (command "_-hatch" "_P" "AR-CONC" "0.02" "0" "_A" "_A" "_Y" "_H" "_Y" "" "_D" "_B" "_S" ss "" "") ) ) (setvar "OSMODE" s_osm) (princ) ) Il me permet d'achurer en autre des polylignes 3d fermées dans le calque HACHURES avec le motif AR-CONC. Le problème est que je me trouve avec un dessin autocad avec un peu plus de 3000 polylignes fermées 3d à hachurer. Ces polylignes appartiennent à différents calques donc chacune des entitées de chaque calque doit contenir un motif diiférent. Lorsque j'éxécute ce lisp, à chaque fois je dois sélectionner les polylignes 3d fermées que je veux hachurer. Serait il possible en exécutant ce lisp sous autocad qu'il hachure directement les polylignes 3d fermées appartenant à un calque spécifique et ceci d'une certaine couleur avec un certain type de motif ? J'aimerais simplement savoir en fait quelles sont les lignes de commandes que je dois ajouter dans mon lisp pour avoir sans les sélectionner des hachures de type AR-CONC Echelle 0.02 Couleur 9 qui doivent appartenir au calque HACHURES pour les polylignes 3d fermées d'un calque nommé 'BATIMENT' ? Merci d'avance pour votre aide. Chris_mtp
-
Bonjour à tous, Je suis confronté à un problème de bissectrice à tracer sur une polyligne 2D avec un nombre de sommets important, 153 au total. Existe il un moyen, en sélectionnant simplement la polyligne et en entrant une longueur de bissectrice, pour chaque sommet de cette polyligne de tracer la bissectrice de l'angle correspondant en utilisant le lisp de gile ? En modifiant le lisp de gile ce doit être possible en fonction d'une nombre de sommet d'une polyligne par une opération type GOTO mais je ne connais pas assez bien le lisp pour modifier quoi que ce soit. Si les bissectrices pourraient être de largeur constante à définir, ce serait idéal. Merci par avance de votre aide. John
-
Tu peux lister toutes les polylignes d'un même calque avec la commande liste d'autocad pour avoir le HANDLE qui identifie chaque objet d'un dessin. Perso, le VBA je ne connais pas mais je sais que c'est possible. John.
-
Merci gile encore une fois pour cê lisp qui va certainement en aider plus d'un. Ca fait déjà un bon gros tri. Les deux lisp sont en fait complémentaires. Par contre, si dans le second on pourrait définir une marge autour des blos de 5mm espace papier ou même entrer une distance manuelle de façon à agrandir l'emprise des blocs à prendre en compte, ce serait idéal mais sérieux bravo. John.
-
http://cjoint.com/?iypkPUtpYt
-
Oups en fait c'est bon, j'vais mal enregistrer le style de côte. Nickel crome. Sérieusement, merci tout comme à gile qui m'aide souvent sur ce forum. Mais les gars, faites concurrence à Covadis Sérieux Arrêtez de travaillez, progm et dans 10 ans vous êtes les nouveaux Bill Gates.
-
C'est parfait ton lisp. C'est exactement ce que je voulais. Merci pour ton aide. Par contre, dis moi le bout de code à modifier pour avoir les distances alignées par rapport aux segments de la polyligne et avoir les angles en gr à 3 decimales. Je l'ai testé avec le style de côtes selon mes besoins mais il continue de m'afficher les angles en degrés. Merci tout de même.
-
Merci lili pour ta réponse. Jusqu'à maintenant, je choisis moi même un à un les attributs que j'intégre dans un calque gelé à l'impression pour rendre le plan lisible. J'arrive pas à intégrer même une image sur ce forum. Je suis nouveau en fait. Par contre, j'ai pu télécharger le fichier exemple. Mais pour le principe, si tu augmente à 10 la taille de tes blocs points dans ton fichier, ca provoque des chevauchements d'où ma question sur ce lisp. Est il possible d'avoir un lisp qui trie les attributs d'un dessin lorsque ceux ci chevauche de manière à les intégrer dans un calque différent de celui d'origine ? Je vais à nouveau essayer d'intégrer un fichier exemple. Merci tout de même.
-
Si bien sûr, je modifie la taille de tous mes blocs points. En fait, quand tu as 5 points topo (de 1 à 5) pris à 1m d'intervalle en ligne droite, si tu augmente la taille de ces blocs points de 1 à 5, tu vas avoir des chevauchements entre les attributs altitudes. Le but du lisp serait de changer de calque les attributs des points 1,2,4 et 5 de façon à n'afficher que le point 3 sur le plan. Mais surtout en ne supprimant pas les attributs des points 1,2 4 et 5, seulement en les changeant de calque. D'où l'idée de définir un intervalle entre les attributs.
-
Désolé gile ne pas avoir été clair. Lorsque j'ai un plan au 2000ème et que je modifie la taille de mes blocs points avec attributs de 1 à 5, la taille de mon bloc et des attributs augmente. Jusque là pas de problème. Mais pour avoir un plan lisible à l'impression, je veux geler un calque dans lequel se trouvent les attributs chevauchant et n'afficher sur mon plan que certaines côtes. Ceci dans le but dans un plan clair et lisible et non un plan illisible. Je ne veux transférer d'un calque à un autre la totalité des attributs mais seulement ceux qui se chevauchent. C'est le même principe que la fonciton de covadis édition 'non chevauchement d'attribut' sauf que dans mon cas je n'ai pas covadis. Le lisp que j'ai trouvé sur un forum est bien de toi. Je ne sais pas si ce que je demande est facile à programmer sinon laisse tomber. Dis moi du moins si j'ai été assez clair et merci par avance de ton aide. Amicalement. John.
-
Merci gile pour ces infos mais le problème est que j'ai milliers d'attributs sur des blocs points topo. Le but serait en fait d'avoir un outil qui me permettrait de changer les attributs d'un bloc qui se chevauchent avec les autres lorsqu'on modifie l'échelle . Le principe en fait serait de : Sélectionner l'attribut du bloc en question qui chevauche (attribut matricule d'un bloc point) Indiquer une largeur de texte autour duquel aucun attribut ne doit se chevaucher (5 mm) Choisir le calque origine des attributs (origine) Choisir le calque de destintation des attributs à transférer (destination) Exécuter la commande. (les attributs qui se chevauchent seront dans le calque destination) Cet outil est semblable à celui de covadis édition NON CHEVAUCHEMENT ATTRIBUTS mais n'ayant pas covadis, ca pose problème. Depuis maintenant, je faisais tout çà à la main mais ca me prend un temps fou. J'ai trouvé je crois un lisp qui va dans le bon sens mais il faudrait le modifier (defun c:layatt (/ att elst name lay ent tag loop) (while (not (and (setq att (car (nentsel "\nSélectionnez l'attribut: "))) (setq elst (entget att)) (= (cdr (assoc 0 elst)) "ATTRIB") (setq name (cdr (assoc 2 (entget (cdr (assoc 330 elst)))))) ) ) (princ "\nEntité non valide.") ) (while (not (and (setq lay (getstring T "\nSpécifiez le nom du calque: ")) (tblsearch "LAYER" lay) ) ) (princ (strcat "\nLe calque \"" lay "\" n'existe pas.")) ) (setq ent (cdr (assoc -2 (tblsearch "BLOCK" name))) tag (cdr (assoc 2 elst)) ) (while ent (setq elst (entget ent)) (if (or (and (= (cdr (assoc 0 elst)) "ATTDEF") (= (cdr (assoc 2 elst)) tag) ) (= (cdr (assoc 0 elst)) "POINT") ) (entmod (subst (cons 8 lay) (assoc 8 elst) elst)) ) (setq ent (entnext ent)) ) (command "_attsync" "_n" name) (princ) ) Si tu peux m'aider, merci par avance. John
-
Bonjour à tous, Existe til un moyen de changer l'attribut d'un calque si celui ci chevauche avec un autre ? Le but serait en fait non pas de supprimer les attributs qui se chevauchent mais les intégrer dans un calque afin de le geler lors de l'impression et d'avoir à l'arrivée un plan lisible. Merci par avance. John
-
Je ne sais pas si c'est possible mais voilà la méthode qu'il faudrait utiliser à mon sens pour côter angulairement une polyligne 2d non fermée : 1-Lister les sommets de la polyligne en coordonnées XYZ 2-Calculer l'angle entre 3 sommets consécutifs et dans l'ordre sous excel ou même dans le lisp sous autocad 3-Intégrer la valeur de l'angle calculé au sommet concerné Je ne m'y connais pas asssez bien en lisp pour prgm un tel outil, c'est dommage. Pour le lisp concernant le listing des sommets de la polyligne, sur CadXp il y en a mais le rest ???
-
En fait pour le profil en long en lui même je n'ai pas de problème. Ce que je veux, c'est à partir de l'axe en plan projet donc en 2D, le côter avec des distances et des angles . Pour les côtes en distances, c'est bon je crois avoir trouvé un lisp que je dois un peu modifier mais je vais m'en sortir même si je commence en lisp. Par contre, pour la cotation augulaire à chaque sommet de la polyligne, ca devient un peu long de cliquer un à un les sommets. De plus, il faudrait à chaque sommet indiqué l'angle à gauche ou à droite inférieur à 200g avec 3décimales et en grades. Mon axe en plan fait 300 sommets environ d'où mon post. John.
-
Dites moi si je me trompe. La commande COTATION RAPIDE permet de côter un segment de polyligne et non la totalité de la polyligne EN regardant dans les options et dans l'aide D'autocad, NADA, il a des outils de cotations polylignes en lisp mais chaque fois entre deux points ou bien en créant des champs dynamiques mais aucun en cliquant sur un objet direct avec la cotation aligné sauf bien sûr d'avoir Covadis qui est onéreux.
-
tu débutes ou quoi avec autocad ? Si tu ne controle pas tout, je vois mal comment tu peux s'en sortir.
-
Bonjour à tous, Est il possible de côter directement par un simple clic une polyligne 2d (fermée ou non) avec des cotations alignés distance et /ou des cotations angulaires et ceci quel que soit le nombre de sommets ? Je dois tracer en fait un profil en long de 300 sommets et côter les segments de la polylignes en distances et en angles entre chaque sommet, ce qui est périlleux et surtout très long. Surtout quand les segments font 5m de longueur mo, yenne, le risque de sélectionner un sommet erroné est grande. Merci par avance de votre aide. John.
-
Si ton cartouche est un bloc, il ne doit être contenu dans un seul calque. Si des attributs sont des calques différents, ca augmente la taille de ton fichier bloc. De plus, contrôle si tu n'as pas de xref ? As tu une image type logo de 5 Mo dans ton cartuche ou même un bloc logo asez lourd ? Essaye de le décomposer et utilise la commande controle qui te purge ton bloc origine. Dis moi si çà marche. John.
-
Bonjour Si ton lisp permet dans l'ordre de pointer l'axe en plan, de pointer dans l'ordre les polylignes 3D des profils en travers et de créer à l'arrivée un fichier format .sem de tous les points des profis compatibles avec le logiciel PISTE, effectivement je suis très intérréssé. Je travaille dans mon cas sur des profils hydrauliques. Géomètre en NC. J'ai crée un tableau excel qui permet à partir d'un semis XYZ de points de créer un fichier structuré au format Piste mais cela me prend énornément de temps pour le traitement. J'ai cherché sur Internet ou même Cadxp mais je n'ai rien trouvé. John.
