Classement
Contenu populaire
Affichage du contenu avec la meilleure réputation depuis le 14/04/2025 dans Messages
-
Ce n'est pas le premier plug-in pour créer des QR Code dans AutoCAD, mais celui-ci permet d'insérer un bloc (éventuellement anonyme, donc non modifiable via l'éditeur de blocs). Le bloc contient juste une hachure qui représente le QR Code sur fond blanc et, optionnellement un attribut constant avec le texte d'origine. La commande QRCODEINSERT affiche une boite de dialogue pour définir les paramètres d'encodage et les propriétés du bloc inséré. Le code source, qui utilise la bibliothèque QRCoder, est disponible sur GitHub. Télécharger InsertQRCodeBlockSetup.msi pour installer le plug-in (compatible avec toutes les version pleines ou verticales d'AutoCAD depuis 2013).3 points
-
Il y a cette discussion peut-être utile : https://georezo.net/forum/viewtopic.php?id=639582 points
-
Bonjour , Je n'ai jamais eu le cas mais je vérifirais un premier temps l'état de terrain TN du projet.2 points
-
Bonjour @Humlun C'est une bonne remarque et je conseille à tout le monde de toujours dessiner les profils en travers avec l'échelle de base de l'écran AutoCAD, c'est-à-dire échelle 1. Mais comme Covadis propose une échelle de dessin des profils en travers (et en long), il y a confusion chez les utilisateurs. Il est important de ne jamais déformer les profils en travers, il faut toujours respecter échelle horizontale = échelle verticale. Cette option est à sélectionner dans le gabarit de mise en page des profils en travers (commande "PTPGMDLEDIT") Aller dans DIVERS puis dans Coefficient du dessin et répondre dans la case Autre Valeur la valeur de l'échelle horizontale qui sera utilisée pour dessiner les profils. C'est l'échelle horizontale qui compte, mais comme on ne déforme pas les profils en travers, si les échelles sont égales, ce sera dessiné avec l'échelle 1 sur l'écran AutoCAD. Avec cette façon de faire, on pourra demander des distances et faire de la cotation ou insérer des blocs dans les profils et tout sera parfait. Je vois passer souvent des profils avec des échelles de dessin exotiques (écran), c'est la preuve que les dessinateurs ne vont pas vérifier ce que fait le logiciel. Avec les commandes natives, quand c'est déformé, ce n'est pas simple à vérifier, les surfaces sont fausses et les distances autant... Cette remarque est valable pour les profils en long, mais là, on déforme les échelles, c'est toujours l'échelle horizontale qui compte, donc si c'est respecté, on pourra au moins vérifier avec les commandes natives tout ce qui est abscisse. Si les échelles sont égales, les altitudes peuvent être vérifiées aisément aussi. J'ai l'habitude de faire des profils échelles égales pour tout contrôler puis revenir à une mise en page plus classique au moment de l'édition. Amicalement2 points
-
@tugdual salut, Prends toi pas la tête à utiliser une autre imprimante PDF que celle d'ACAD, perso j'ao arréter les PDF creator et autre, je n'utilise que DWG to PDF et ça aùmrche très bien!! 😉 Phil2 points
-
Maintenir la rouche Contrôle enfoncée lors du choix : cela existe au moins depuis la V9.2 points
-
Bonjour, A l'aide de la commande RENOMMER, vous pouvez mettre en ancien nom MARTIN* et en nouveau nom DUPONT*2 points
-
Bonjour, Je me permets de déterrer ce post de 2023. J'ai passé plusieurs postes en version GEOGEXFRCAD réseau vers la version 3.3 (avant on utilisait des versions 2.1 et 3.0 sans problèmes avec plusieurs licences réseau). Le fonctionnement du timeout réglé sur 2h est insupportable, et surtout les utilisateurs (clients) n'ont pas été prévenus et n'ont pas le choix. La modification se fait en cours de contrat de location, en toute discrétion, sans préavis, sans possibilité de réglage de temps, etc.... On modifie les règles du jeu en cours de partie, sans attendre l'échéance du contrat. Est-ce légal d'après le contrat de location signé ? Cela crée trop de problèmes de licences indisponibles. On voudrait éviter que les gens louent des licences réseau on ne s'y prendrait pas mieux..... Simple ajustement de Sogelink pour pousser à la location de licences monopostes ? Le timeout réglé sur 5 minutes empêchait surtout de vendre toujours plus de licences, business as usual... Idem pour le fait de ne pas pouvoir ouvrir plusieurs instances d'un GEOGEX réseau sur un même poste sans prendre plusieurs jetons, ce n'est pas normal, ni logique. Si j'ai un utilisateur qui ouvre 3 dessins dans 3 GEOGEX différents (pour les comparer sur plusieurs écrans et ne pas risquer que le plantage d'un seul onglet ne fasse planter tout le reste), et bien il prend 3 jetons. Je n'ai pas trouvé cette limitation d'instances multiples sur un même poste, ni dans le contrat signé, ni dans les conditions du contrat OEM..... Bref, tous les jours j'ai des utilisateurs qui n'arrivent plus à avoir de licences, qui ne travaillent plus et attendent patiemment en argumentant qu'elles ne peuvent plus travailler. Il faut faire le tour des bureaux et du télétravail, pour savoir qui a oublié de fermer son Geogex, alors qu'il est juste parti boire un café.... Alors qu'avant cela, nous n'avons jamais eu ce genre de problèmes bloquants avec nos licences réseau (que ce soit Covadis ou Geogex). Je confirme le sentiment de @Geo34, cela revient à brider le système multi-utilisateurs et la perte de fluidité qui va avec ? Surtout quand cela nous est imposer en cours de contrat.... Salutations.2 points
-
Merci de ce message laconique et très convenu, pour ma part je vous invite à sortir une version stable dès le lancement d'une nouvelle version et donc de faire un vrai processus de Q&A avant la sortie et non après. Si vous souhaitez tant que ça prendre en compte les remarques de la communauté utilisateurs, je vous invite à créer un un volet communautaire sur votre site comprenant un report des bugs avéré ou des fonctionnalités cassées ou manquantes avec un suivi permettant de vérifier la prise en compte par l'équipe de développeurs et l'application des patch correctifs correspondants.1 point
-
Bonjour, Et coller vers les coordonnées d'origine, ça ne suffit pas?1 point
-
Hello 1) L Update AutoCAD MAP 2026.0.1 est sorti debut mai https://help.autodesk.com/view/MAP/2026/FRA/?guid=AUTOCAD_MAP_2026_0_1_UPDATE 2) Ne pas oublier l Update AutoCAD 2026.0.1 qui permet de "retrouver" les Cartes BingMaps ( GEOCARTE / _GEOMAP ) Bye, lecrabe1 point
-
Hello Gege @GEGEMATIC 1) Bonne question - Je crois que OUI : en attente d une reponse d un Pro avec AutoCAD LT 2024/2025/2026 !? 2) Pour les Routines Lisp / VLisp interessantes pour les ODs de AutoCAD MAP (ou AutoCAD CIVIL), voir ici : https://georezo.net/forum/viewtopic.php?id=44248 3) Sur la reponse #6, je fournis une routine "XD2OD" de Peter HEALD qui fait le Job ... Wait and See ... 4) Encore MERCI a @bonuscad ( CADaSChtroumpf / Bruno ) pour toutes SES Superbes Routines ! Bonne semaine, Bye, lecrabe1 point
-
Bonjour @angelique Trop de gens pas très consciencieux ou mal formés tout simplement, les "gens" croient qu'il suffit d'appuyer sur le bouton, la formation leur dira quel bouton. Heureusement ATTSYNC a résolu le problème ! il y a des cas extrêmes où ça ne fonctionne pas, on a eu une question récemment avec un bloc complètement pourri, des dizaines d'étiquettes en double et d'autres sans attribut, d'accord c'est rare, mais ça arrive. Dans votre cas, ç'a fonctionné, nous sommes contents pour vous. Amicalement1 point
-
@nG! Hebus le mieux s'est de modifier le bloc ou renommer le bloc de la même fçon pour qu'il se mette à jour sur tout le dessin imagine c'est un bloc qui a été répété 200 fopis sur le dessin t'imagine le b*rdel après avoir cassé ces blcos pour retravailler le dessin 😉 Phil @laud69 t'en penses quoi?? :p1 point
-
@Geo34 Sincèrement merci, c'était exactement ce qu’il fallait. Très belle continuation à vous !1 point
-
1 point
-
En effet il est très fortement possible que l'Etat de terrain du TN soit inexistant dans le gestionnaire d'était de terrain (arrive par exemple si le MNT TN est issu d'un copier/coller dans le fichier où est réalisé l'autopiste). Egalement il faut que cet état de terrain soit sélectionné dans les paramètres du projet Autopiste !1 point
-
Description du Poste Rattaché(e) au responsable du bureau d'études vous assurez la création de maquettes numériques, de plans et de schémas sur les différents projets qui vous seront confiés. Les projets sont liés à des missions de réponses à appel d’offres ou réalisation (exécution), dans une moindre mesure des APS/APD Domaine d’activité : - unités de traitement des eaux mobiles (container) - station d’épuration (industrielles ou urbaines) - usine d’eau potable - postes de relevage, bassin d’orage La taille des dossiers varie de 50k€ à plusieurs millions d’euros. Vos objectifs - La conception des lots techniques des bâtiments en collaboration avec les clients. - La réalisation des plans d'implantation et des schémas de principe des corps d’états techniques. - Réaliser les études techniques de conception et produire les documents techniques entrant dans la constitution des dossiers aux divers stades d’études. Vos principales missions - Réalisation de maquettes numériques à partir d’un cahier des charges ou des plans fournis par le client. Ces maquettes incluront le bâti (mur, dalle béton, poutres…), le process (pompes, tuyauteries, équipements spécialisés…), électricité et les réseaux enterrés. - Edition des plans à partir des maquettes (implantation, vue en plan, coupes…) - Extraction des métrés (tubes, coudes, accessoires) - Création des composants nécessaires à la réalisation des tâches citées plus haut (pour Revit : utilisation des plans de références, fonctionnement paramétrique des familles, utilisation des tables de consultation, des sous-catégories d’objets ; pour AutoCAD utilisation des attributs…) Profil Des connaissances en installation générale, en ventilation et en tuyauterie seront appréciées. Une connaissance du logiciel Revit serait un plus, AutoCAD est également un logiciel utilisé ponctuellement (notamment pour la création/modification des schémas/PID) Bonnes connaissances en anglais ; il y a beaucoup plus d’informations via des forums ou des tutoriels sur les logiciels spécialisés ou sur Revit, qu’il n’est pas possible d’en trouver en français. Pack Office et plus particulièrement Excel Niveau scolaire : BTS/Licence orienté traitement des eaux Temps de travail 37h hebdomadaire Type de contrat CDD en vu d’un CDI Poste basé sur Lyon, TVtravail possible Salaire et avantages A partir de 25000€ annuel, à négocier suivant expérience Chèques restaurant et chèques vacances en cours de mise en place Mutuelle avec protection élargie candiature : contact(at)jpeg-etudes.fr1 point
-
après je force un peu les lignes... le vrai débutant n'aurait pas utiliser de blocs : bonjour l'angoisse pour les anciens qui auraient eu à retravailler sur ce ficheir!! 😛1 point
-
Bonjour, Tu peux consulter ce poste : Perso, je me suis créé 2 boutons/commandes avec : Le premier qui copie avec comme référence 0,0 : ^c^c_copybase;0,0;\select; Le second qui colle en tant que bloc en 0,0 : ^C^C_pasteblock;0,0; En modifiant la seconde commande en ^C^C_pasteclip;0,0; tu devrais obtenir coller en 0,0 sans bloc. A tester.1 point
-
Vous l’avez certainement remarqué : ce fameux bouton « Se connecter avec Google/Facebook/LinkedIn…etc » qui apparaît lorsque vous devez vous identifier sur un nouveau site web. Peut-être vous êtes-vous demandé quel intérêt il y a à utiliser vos identifiants Google/Facebook/LinkedIn ou autres pour accéder à ce nouveau site, et quelle relation existe entre ces deux plateformes apparemment sans rapport. Toutes les réponses: https://dessein-tech.com/t/tout-comprendre-a-oauth-le-systeme-dautorisation-securise/34041 point
-
Hello Mais c simplement un "Partage" des Données !? Bye, lecrabe1 point
-
1 point
-
Bonjour, J'ai tendance à râler sur certains aspects du logiciel et sur la politique de licence, mais le service support est très souvent efficace avec une réponse sous 48 heures. Dernier exemple en date , il m'étais impossible d'accèder à la gestion des points typés . Le logiciel plantait systématiquement. Il y avait un bug dans l'application des tables de normes. ( bug venant de l'utilisateur) Jamais , je n'y aurais pensé. Le service support m'a trouvé le Bug m'évitant un bon mois de reprise donc merci à eux.1 point
-
1 point
-
1 point
-
Bonjour @Ingénierie64 Je plussoie la réponde de @Vincent P. Je partais sur la même piste pendant qu'il répondait. Amicalement1 point
-
Bonjour, Regarde ici : https://forums.autodesk.com/t5/autocad-tous-produits-francais/autocad-supprimer-un-attribut-probleme/td-p/11362028 Il y a le lisp de gile pour supprimer tous les attributs de blocs. Olivier1 point
-
1 point
-
le concessionnaire de la RD à bien souvent ces propres guides, il peuvent vous les fournir, sinon il faut s'appuyer sur l'IISR chapitre 7 et sur les études CEREMA dont les fiches gratuites sont disponibles en ligne1 point
-
Bonjour Je viens d'écrire au propriétaire du site par le biais du formulaire de contact du site de Cad Magazine. Il est fort possible qu'ils ne répondent pas, mais la possibilité d'une réponse n'est pas de zéro, il faut essayer. J'ai dépeint la situation actuelle avec l'invasion de spams en leur demandant sinon de trouver une solution, au moins s'attaquer au problème. En souhaitant qu'un "sachant" va s'y intéresser et résoudre le souci. Je vous tiens au courant dans tous les cas. Amicalement1 point
-
Hello @Maxime10 MERCI pour le rappel de "NUM_INC" de Lee-Mac ! SVP ne pas oublier que le Lisp / VLisp "NUMBER_TYPE_AREA_Table" n est pas "de moi" , neanmoins il rend bien des services ! Cependant je suis l auteur du CDC / CCTP ... Bon WE, Bye, lecrabe1 point
-
Bonjour @AlexisF, Je me permets de prendre part aux échanges dans le sens où j'ai il y a peu formulé le même genre de demande à la communauté CadXp. @lecrabe m'avait alors fournit le Lisp proposé plus tôt "NUMBER_TYPE_AREA_Table", sous sa version 2 "NUMBER_TYPE_AREA_2_Table". Ce Lisp fonctionne à merveille je ne peux que te conseiller de l'essayer. Aussi, pour répondre à une de tes interrogations vue plus tôt, il est possible de numéroter à la volée avec le formidable programme de Lee Mac intitulé "NUM_INC" que tu pourras retrouver sur son site. Espérant t'aider, Maxime1 point
-
Pas tout compris. Vous voulez les surfaces des contours rouge ou de chaque pièce? Sinon, une autre solution avec AutoCAD Map 3D (inclus dans votre abonnement AutoCAD) : https://youtu.be/9lXGagNRuLo Olivier1 point
-
Le premier argument de setpropertyvalue doit être le nom d'entité (ename) de l'objet à modifier. Dans le cas présent, il s'agit de la référence de bloc qui vient d'être insérée qu'on peut obtenir avec la fonction entlast qui renvoie la dernière entité créée. (command "-INSERER" "ECLATE_PI_1" pt1 1 "" 0 "") (setq bloc (entlast)) (setpropertyvalue bloc "AcDbDynBlockPropertyVisibilité1" "Te à 3 emboitements")1 point
-
Salut, Une autre solution : - dupliquer le MNT initial (avec le merlon) - sur la copie supprimer les points "hauts" du merlon pour ne conserver que l'embase - lancer la commande "Comparer des surfaces" pour obtenir le volume de terrassement entre cces deux MNT Ne pas oublier dans le Module SP d'indiquer le MNT Merlon comme Terrain de référence pour les calculs.1 point
-
Bonjour, Il y a à bien un sujet avec le point test et surtout avec la ligne CC_MS_LATERITE qui revient reviens vers l'axe. Si tu la supprimes, ton profil marche. Après j'ai toujours eu du mal avec le fonctionnement des points test que je trouve capricieux. Et pour tes PL, rien d'anormal, tu as donné comme PL projet, le TN. Donc normal que tu sois sur le TN et pas 5cm au-dessus. Avec un PL projet 5 cm au dessus du TN et suppression de la ligne CC_MS_LATERITE, voici ce que ça donne :1 point
-
La suite ici : 😉 https://www.caderix.com/journal/spip.php?article5481 point
-
Hello @TUAU Comme le dit si bien @Olivier Eckmann avec MAPCLEAN tu pourras "marquer" les Blocs en double et revenir "dessus" plus tard pour decider ceux qu il faut garder / effacer ! Commande: MAPCLEAN < Entree > Prendre a droite l icone "Selection" (A droite de selection manuelle) et selectionner tes Blocs en double ... Suivant Cocher "Interactif" et choisir le BON Algo "Supprimer les Elements dupliques" ... Choisir la Tolerance (Distance Rayon de recherche en fait), par exemple : 0.1 Suivant -- Suivant -- Terminer Cliquer "Tout Marquer" Fermer Ainsi tu obtiens des Blocs (Marqueurs Octogones Bleu Ciel) sur tes Blocs en double ! Apres AU BOULOT ! Bye, lecrabe1 point
-
Bonjour, Comme vous avez MAP, il y a la commande MAPCLEAN qui permet de détecter/corriger (manuellement ou automatiquement) les doublons de point, de bloc, de texte, de ligne, de polyligne ... Olivier1 point
-
Bonjour, On peut voir les blocs superposés à l'aide de la commande QUANTITE.1 point
-
Il faut faire une sélection par Trajet (_Fence) (defun c:SSFPL (/ massoc pl elst pts ss) (defun massoc (key alst) (if (setq alst (member (assoc key alst) alst)) (cons (cdar alst) (massoc key (cdr alst))) ) ) (if (and (setq pl (car (entsel "\nSélectionnez une polyligne: "))) (= (cdr (assoc 0 (setq elst (entget pl)))) "LWPOLYLINE") ) (progn (setq pts (massoc 10 elst)) (if (= (logand 1 (cdr (assoc 70 elst))) 1) (setq pts (append pts (list (car pts)))) ) (setq pts (mapcar '(lambda (p) (trans p pl 1)) pts)) (setq ss (ssget "_F" pts)) (ssdel pl ss) (sssetfirst nil ss) ) ) (princ) )1 point
-
Hello @TUAU Voir le "Special Selection de Gilles ... ---------- Routines "Special_Selections.lsp" ---------- Special_Selections : Plusieurs routines pour faire des jeux de selection suivant les proprietes d'un objet, suivant une fenetre parallèle au SCU courant (sscu) ou par une fenetre delimitee (ssoc/ssof) par un objet. --- Commandes disponibles --- ssc (suivant la couleur), ssl (suivant le calque), sse (suivant le type d'entite), sstl (suivant le type de ligne), ssatt (suivant la valeur d'un attribut), sscu (fenetre parallele au SCU), ssof (fenetre definie par un objet), ssoc (capture definie par un objet), inv_sel (inverser la selection), ssd (suivant les valeurs de parametres de blocs dynamiques) sshp - Selection par Motif de Hachure (2014/09) Rappel : chargement des routines Lisp/VLisp par la commande: APPLOAD <Entree> ou bien par Outils / Charger une application / ... ---- A priori SSOF & SSOC (Selection depuis UNE Polyligne ou UN Cercle ou UNE Ellipse) devraient t aider !? Tu peux eventuellement decaler un peu ta Polyligne de chaque cote, la fermer et utiliser SSOF / SSOC ... Bye, lecrabe ;;;===============================================================;;; ;;; ;;; Special_Selections par GC ;;; ;;; Quelques routines pour creer des jeux de selection particuliers ;;; ;;;===============================================================;;; ;;; ;;; sshp - Selection par Motif de Hachure (2014/09) ;;; ;;; avec SSD version 2.6 par GC 14/07/08 (derniere revision 17/11/2011) ;;; ;; Selection par calque (defun c:ssl (/ ss ent) (and (or (and (setq ss (cadr (ssgetfirst))) (= 1 (sslength ss)) (setq ent (ssname ss 0)) ) (and (sssetfirst nil nil) (setq ent (car (entsel))) ) ) (sssetfirst nil (ssget "_X" (list (assoc 8 (entget ent))))) ) (princ) ) ;;;===============================================================;;; ;; Selection par type d'entite (defun c:sse (/ ss) (and (or (and (setq ss (cadr (ssgetfirst))) (= 1 (sslength ss)) (setq ent (ssname ss 0)) ) (and (sssetfirst nil nil) (setq ent (car (entsel))) ) ) (sssetfirst nil (ssget "_X" (list (assoc 0 (entget ent))))) ) (princ) ) ;;;===============================================================;;; ;; Selection par couleur (defun c:ssc (/ ent elst col) (and (or (and (setq ss (cadr (ssgetfirst))) (= 1 (sslength ss)) (setq ent (ssname ss 0)) ) (and (sssetfirst nil nil) (setq ent (car (entsel))) ) ) (setq elst (entget ent) col (cond ((assoc 430 elst)) ((assoc 420 elst)) ((assoc 62 elst)) (T (cons 62 256)) ) ) (sssetfirst nil (ssget "_X" (list col))) ) (princ) ) ;;;===============================================================;;; ;; Selection par type de ligne (defun c:sstl (/ ent tl) (and (or (and (setq ss (cadr (ssgetfirst))) (= 1 (sslength ss)) (setq ent (ssname ss 0)) ) (and (sssetfirst nil nil) (setq ent (car (entsel))) ) ) (or (setq tl (assoc 6 (entget ent))) (setq tl (cons 6 "BYLAYER")) ) (sssetfirst nil (ssget "_X" (list tl))) ) (princ) ) ;;;===============================================================;;; ;; Selection par valeur d'attribut (defun c:ssatt (/ doc att elst tag val name ss1 ss2) (vl-load-com) (and (setq doc (vla-get-ActiveDocument (vlax-get-acad-object))) (setq att (car (nentsel "\nSelectionnez l'attribut source: "))) (setq att (vlax-ename->vla-object att)) (= (vla-get-ObjectName att) "AcDbAttribute") (setq tag (vla-get-TagString att) val (vla-get-TextString att) blk (vla-ObjectIDToObject doc (vla-get-OwnerId att)) name (if (vlax-property-available-p blk 'EffectiveName) (vla-get-EffectiveName blk) (vla-get-Name blk) ) ss2 (ssadd) ) (princ "\nSelectionnez les blocs ou <tout>: ") (or (ssget (list '(0 . "INSERT") '(66 . 1) (cons 2 (strcat name ",`*U*")) ) ) (ssget "_X" (list '(0 . "INSERT") '(66 . 1) (cons 2 (strcat name ",`*U*")) ) ) ) (vlax-for blk (setq ss1 (vla-get-ActiveSelectionSet doc)) (if (= name (if (vlax-property-available-p blk 'EffectiveName) (vla-get-EffectiveName blk) (vla-get-Name blk) ) ) (foreach a (vlax-invoke blk 'GetAttributes) (if (and (= (vla-get-TagString a) tag) (= (vla-get-TextString a) val) ) (ssadd (vlax-vla-object->ename blk) ss2) T ) ) T ) ) (not (vla-delete ss1)) (sssetfirst nil ss2) ) (princ) ) ;;;===============================================================;;; ;; SSCU par GC 31/03/07 ;; Selection mutiple par cible, fenetre ou capture ;; Le cadre de la fenetre est parallele au plan du SCU courant ;; La selection est terminee en faisant Entree, Espace ou clic droit (defun c:sscu (/ sel sst loop p1 gr p2 p3 p4 po ss n ent) (defun ssd_err (msg) (if (= msg "Fonction annulee") (princ) (princ (strcat "\nErreur: " msg)) ) (sssetfirst nil nil) (redraw) (setq *error* m:err m:err nil ) (princ) ) ;; Retourne un jeu de selection, un point ou nil (defun sel (/ loop gr pt) (setq loop T) (while (and (setq gr (grread T 12 2)) (/= (car gr) 3) loop) (cond ((= (car gr) 5) (setq pt (cadr gr)) ) ((or (member gr '((2 13) (2 32))) (or (= (car gr) 11) (= (car gr) 25)) ) (setq loop nil pt nil ) ) ) ) (if pt (cond ((ssget pt)) (pt) ) ) ) (setq m:err *error* *error* ssu_err ) (sssetfirst nil nil) (setq sst (ssadd)) (while (and (princ "\nChoix des objets: ") (setq p1 (sel)) ) (if (listp p1) (progn (princ "\nSpecifiez le coin oppose: ") (setq p1 (list (car p1) (cadr p1))) (while (and (setq gr (grread T 12 0)) (/= (car gr) 3)) (if (= 5 (car gr)) (progn (redraw) (setq p2 (list (caadr gr) (cadr p1)) p3 (list (caadr gr) (cadadr gr)) p4 (list (car p1) (cadadr gr)) ) (if (< (car p1) (car p2)) (progn (setq po "_WP") (grvecs (list 255 p1 p2 255 p2 p3 255 p3 p4 255 p4 p1) ) ) (progn (setq po "_CP") (grvecs (list -255 p1 p2 -255 p2 p3 -255 p3 p4 -255 p4 p1) ) ) ) ) ) ) (redraw) (if (setq ss (ssget po (list p1 p2 p3 p4))) (repeat (setq n (sslength ss)) (setq ent (ssname ss (setq n (1- n)))) (if (not (ssmemb ent sst)) (ssadd ent sst) ) (sssetfirst nil sst) ) ) ) (progn (ssadd (ssname p1 0) sst) (sssetfirst nil sst) ) ) ) (sssetfirst nil sst) (setq *error* m:err m:err nil ) (princ) ) ;;;===============================================================;;; ;;; SelByObj par GC 06/10/06 ;;; Cree un jeu de selection avec tous les objets contenus ou ;;; captures, dans la vue courante, par l'objet selectionne ;;; (cercle, ellipse, polyligne fermee). ;;; Arguments : ;;; - un nom d'entite (ename) ;;; - un mode de selection (Cp ou Wp) ;;; - un filtre de selection ou nil ;;; ;;; modifie le 19/07/07 : fonctionne avec les objets hors fenetre (defun SelByObj (ent opt fltr / obj dist n lst prec dist p_lst ss) (vl-load-com) (if (= (type ent) 'ENAME) (setq obj (vlax-ename->vla-object ent)) (setq obj ent ent (vlax-vla-object->ename ent) ) ) (cond ((member (vla-get-ObjectName obj) '("AcDbCircle" "AcDbEllipse")) (setq dist (/ (vlax-curve-getDistAtParam obj (vlax-curve-getEndParam obj) ) 50 ) n 0 ) (repeat 50 (setq lst (cons (trans (vlax-curve-getPointAtDist obj (* dist (setq n (1+ n)))) 0 1 ) lst ) ) ) ) ((and (= (vla-get-ObjectName obj) "AcDbPolyline") (= (vla-get-Closed obj) :vlax-true) ) (setq p_lst (vl-remove-if-not '(lambda (x) (or (= (car x) 10) (= (car x) 42) ) ) (entget ent) ) ) (while p_lst (setq lst (cons (trans (append (cdr (assoc 10 p_lst)) (list (cdr (assoc 38 (entget ent)))) ) ent 1 ) lst ) ) (if (/= 0 (cdadr p_lst)) (progn (setq prec (1+ (fix (* 25 (sqrt (abs (cdadr p_lst)))))) dist (/ (- (if (cdaddr p_lst) (vlax-curve-getDistAtPoint obj (trans (cdaddr p_lst) ent 0) ) (vlax-curve-getDistAtParam obj (vlax-curve-getEndParam obj) ) ) (vlax-curve-getDistAtPoint obj (trans (cdar p_lst) ent 0) ) ) prec ) n 0 ) (repeat (1- prec) (setq lst (cons (trans (vlax-curve-getPointAtDist obj (+ (vlax-curve-getDistAtPoint obj (trans (cdar p_lst) ent 0) ) (* dist (setq n (1+ n))) ) ) 0 1 ) lst ) ) ) ) ) (setq p_lst (cddr p_lst)) ) ) ) (cond (lst (vla-ZoomExtents (vlax-get-acad-object)) (setq ss (ssget (strcat "_" opt) lst fltr)) (vla-ZoomPrevious (vlax-get-acad-object)) ss ) ) ) ;;;===============================================================;;; ;;; SSOC pour selectionner tous les objets captures, suivant ;;; la vue, par le cercle, l'ellipse ou la polyligne. (defun c:ssoc (/ ss opt) (and (or (and (setq ss (cadr (ssgetfirst))) (= 1 (sslength ss)) ) (and (sssetfirst nil nil) (setq ss (ssget "_:S:E" (list '(-4 . "<OR") '(0 . "CIRCLE") '(-4 . "<AND") '(0 . "ELLIPSE") '(41 . 0.0) (cons 42 (* 2 pi)) '(-4 . "AND>") '(-4 . "<AND") '(0 . "LWPOLYLINE") '(-4 . "&") '(70 . 1) '(-4 . "AND>") '(-4 . "OR>") ) ) ) ) ) (sssetfirst nil (ssdel (ssname ss 0) (SelByObj (ssname ss 0) "Cp" nil)) ) ) (princ) ) ;;;===============================================================;;; ;;; SSOF pour selectionner tous les objets contenus, suivant ;;; la vue, dans le cercle, l'ellipse ou la polyligne. (defun c:ssof (/ ss opt) (and (or (and (setq ss (cadr (ssgetfirst))) (= 1 (sslength ss)) ) (and (sssetfirst nil nil) (setq ss (ssget "_:S:E" (list '(-4 . "<OR") '(0 . "CIRCLE") '(-4 . "<AND") '(0 . "ELLIPSE") '(41 . 0.0) (cons 42 (* 2 pi)) '(-4 . "AND>") '(-4 . "<AND") '(0 . "LWPOLYLINE") '(-4 . "&") '(70 . 1) '(-4 . "AND>") '(-4 . "OR>") ) ) ) ) ) (sssetfirst nil (SelByObj (ssname ss 0) "Wp" nil) ) ) (princ) ) ;;;===============================================================;;; ;;; Inv_sel Inverse le jeu de selection courant (defun c:inv_sel (/ ssa ssf n) (setq ssa (ssget "_A" (list '(0 . "~VIEWPORT") (cons 410 (getvar "ctab"))) ) ) (if (setq ssf (cadr (ssgetfirst))) (repeat (setq n (sslength ssf)) (ssdel (ssname ssf (setq n (1- n))) ssa) ) ) (sssetfirst) (sssetfirst nil ssa) ) ;;;===============================================================;;; ;;; SSD version 2.6 par GC 14/07/08 (derniere revision 17/11/2011) ;;; Selection de blocs dynamiques par des valeurs de parametres dynamiques ;;; ;;; Utilisations : ;;; - Pour creer un jeu de selection, entrer SSD, selectionner un bloc source ;;; puis choisir les valeurs a filtrer dans la boite de dialogue. ;;; - A l'interieur d'un commande de modification, a l'invite "Choix des objets: " ;;; entrer (SSD). ;;; Le filtre peut se faire sur tout le dessin ou a l'interieur d'une selection (defun ssd (/ *error* ToString DynBlkPropValue dz ss ent blk name pop fuzz ret sel res) (vl-load-com) (or *acad* (setq *acad* (vlax-get-acad-object))) (or *acdoc* (setq *acdoc* (vla-get-ActiveDocument *acad*))) (defun *error* (msg) (if (/= msg "Fonction annulee") (princ (strcat "Erreur: " msg)) ) (and blk (not (redraw (vlax-vla-object->ename blk) 4))) (setvar 'dimzin dz) (princ) ) (defun ToString (v u) (cond ((= 0 u) (vl-princ-to-string v)) ((= 1 u) (angtos v (getvar 'aunits) 16)) ((if (< (abs v) 1e-6) (rtos v 1 6) (rtos v (getvar 'lunits) 12) ) ) ) ) ;; DynBlkPropValue ;; Boite de dialogue pour choisir des valeurs de parametres dynamiques ;; ;; Argument : la liste des parametres dynamiques (defun DynBlkPropValue (lst / tmp file pn unt av dcl_id val) (setq tmp (vl-filename-mktemp "Tmp.dcl") file (open tmp "w") ) (write-line (strcat "DynBlkProps:dialog{label=\"Filtre de blocs dynamiques\";" ":text{label=\"Nom du bloc : \"" (vl-prin1-to-string name) ";}spacer;:boxed_column{label=\"Proprietes dynamiques\";" ) file ) (foreach p lst (setq pn (vla-get-PropertyName p) unt (vla-get-UnitsType p) ) (cond ((setq av (vlax-get p 'AllowedValues)) (setq av (mapcar '(lambda (x) (ToString x unt)) av) pop (cons (vl-list* pn "*" av) pop) ) (write-line (strcat ":popup_list{label=" (vl-prin1-to-string pn) ";key=" (vl-prin1-to-string pn) ";value=" (itoa (1+ (vl-position (ToString (vlax-get p 'Value) unt) av))) ";edit_width=25;allow_accept=true;}" ) file ) ) ((/= pn "Origin") (setq fuzz (cons pn fuzz)) (write-line (strcat ":row{:edit_box{label=" (vl-prin1-to-string pn) ";key=" (vl-prin1-to-string pn) ";value=" (vl-prin1-to-string (ToString (vlax-get p 'Value) unt)) ";edit_width=18;allow_accept=true;}" ":edit_box{label=\"Tolerance\";key=" (vl-prin1-to-string (strcat pn "_fuzz")) ";value=\"1e-12\";edit_width=6;allow_accept=true;}}" ) file ) ) ) ) (write-line (strcat "}spacer;:radio_row{key=\"selset\";" ":radio_button{label=\"Tout le dessin\";key=\"all\";value=\"1\";}" ":radio_button{label=\"Selection\";key=\"sel\";}}" "spacer;ok_cancel;}" ) file ) (close file) (setq dcl_id (load_dialog tmp)) (if (not (new_dialog "DynBlkProps" dcl_id)) (exit) ) (foreach p pop (start_list (car p)) (mapcar 'add_list (cdr p)) (end_list) ) (action_tile "accept" "(foreach p (mapcar 'vla-get-PropertyName lst) (if (assoc p pop) (setq val (nth (atoi (get_tile p)) (cdr (assoc p pop)))) (setq val (get_tile p))) (if (and val (/= val \"\") (/= val \"*\")) (setq ret (cons (cons p val) ret)))) (setq fuzz (mapcar (function (lambda (x) (cons x (get_tile (strcat x \"_fuzz\"))))) fuzz)) (and (not ret) (setq ret T)) (setq sel (get_tile \"selset\")) (done_dialog)" ) (action_tile "cancel" "(setq ret nil)") (start_dialog) (unload_dialog dcl_id) (vl-file-delete tmp) ret ) ;;----------------------------------------------------;; (setq dz (getvar 'dimzin)) (setvar 'dimzin 8) (and (or (and (setq ss (cadr (ssgetfirst))) (= 1 (sslength ss)) (setq ent (ssname ss 0)) (sssetfirst nil nil) ) (and (sssetfirst nil nil) (setq ent (car (entsel))) ) ) (setq blk (vlax-ename->vla-object ent)) (= (vla-get-ObjectName blk) "AcDbBlockReference") (= (vla-get-IsDynamicBlock blk) :vlax-true) (not (redraw ent 3)) (setq name (vla-get-EffectiveName blk)) (or (DynBlkPropValue (vlax-invoke blk 'getDynamicBlockProperties)) (redraw ent 4) ) (not (redraw ent 4)) (if (= sel "all") (ssget "_X" (list '(0 . "INSERT") (cons 2 (strcat name ",`*U*"))) ) (ssget (list '(0 . "INSERT") (cons 2 (strcat name ",`*U*"))) ) ) (setq res (ssadd)) (vlax-for b (setq ss (vla-get-ActiveSelectionSet *acdoc*)) (if (and (= (vla-get-EffectiveName b) name) (or (= ret T) ((lambda (lst) (apply '= (cons T (mapcar (function (lambda (p / n v l u f) (setq n (car p) l (assoc n lst) u (vla-get-UnitsType (caddr l)) ) (equal (cond ((= 0 u) (cdr p)) ((= 1 u) (angtof (cdr p))) (T (distof (cdr p))) ) (if (= u 0) (vl-princ-to-string (cadr l)) (cadr l) ) (if (and (setq f (cdr (assoc n fuzz))) (numberp (read f)) ) (atof f) 1e-12 ) ) ) ) ret ) ) ) ) (mapcar (function (lambda (p / n v) (list (setq n (vla-get-PropertyName p)) (vlax-get p 'Value) p ) ) ) (vlax-invoke b 'getDynamicBlockProperties) ) ) ) ) (ssadd (vlax-vla-object->ename b) res) ) ) (vla-delete ss) ) (setvar 'dimzin dz) res ) (defun c:ssd () (sssetfirst nil (ssd)) (princ) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Selection par motif de hachure - sshp - 2014/09 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun c:sshp (/ ss ent elst) (and (or (and (setq ss (cadr (ssgetfirst))) (= 1 (sslength ss)) (setq ent (ssname ss 0)) ) (and (sssetfirst nil nil) (setq ent (car (entsel "\nSelectionnez une Hachure: "))) ) ) (= (cdr (assoc 0 (setq elst (entget ent)))) "HATCH") (sssetfirst nil (ssget "_X" (list '(0 . "HATCH") (assoc 2 elst)))) ) (princ) )1 point
-
Salut, Je viens réessayer pas de problème chez moi, peut être un problème de copier-coller, ou plus surement un souci avec l’éditeur de texte utilisé car les \\PAR ajouté en saut de ligne ne font pas partie du code que j’ai posté… Re-teste avec le Bloc-notes sinon avec le fichier en pièce jointe, pour rappel je n’ai toujours pas géré le cas des sur les cotes radiales et angulaires… Donc à n’utiliser que pour de la cotation linéaire ! dimexposant.LSP A+1 point