-
Compteur de contenus
1 113 -
Inscription
-
Dernière visite
-
Jours gagnés
42
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par Luna
-
Faire suivre le texte d'une polyligne
Luna a répondu à un(e) sujet de DPB6804 dans AutoCAD 2020-2024
Coucou, Tu peux le trouver sur son site, dont voici la page correspondant à "Align Text, MText or Attribute to curve". Et voici également la page concernant le programme évoqué par @didier : "Align Text to curve". Il te suffit de dl les fichiers .lsp en haut de page dans le tableau pour les charger dans AutoCAD ;3 Bisous, Luna -
Coucou, Il y a plusieurs solutions, en fonction du nombre d'étiquettes à créer : La première version consiste à le faire sans programmation, en passant par l'insertion d'un champ. Pour cela, il suffit de créer une ligne de repère, d'éditer le texte de cette ligne et de cliquer sur "Insérer un champ" (sans le ruban, c'est la petite flèche vers le bas en haut à droite, sinon c'est dans l'onglet "Editeur de texte", sous-onglet "Insertion" et option "Champ" avec le ruban). Cela ouvre une fenêtre et il suffit de choisir dans la colonne de gauche "Noms de champs: " le champ nommé "Objet", dans la colonne au centre, il suffit de cliquer sur la polyligne désirée et de choisir la propriété "Aire", puis la colonne de droite permet de définir un format particulier si besoin. En cliquant sur "OK", l'expression de champ ainsi générée permettra de lier la ligne de repère avec la polyligne et donc si la polyligne est modifiée, la valeur contenue dans l'étiquette sera mis à jour à chaque "_REGEN" et/ou "_REGENALL". PS : c'est comme cela que fonctionne le programme TOTAL AREA d'ailleurs, sauf que ce programme créé un texte un nom une ligne de repère. La seconde version serait d'utiliser un script (je ne possède pas les compétences pour le faire cependant). La troisième solution est de passer par de la programmation (LISP, VBA, etc...). Je pourrais te proposer le programme suivant (non testé) assez simpliste : (defun c:AREAtoMLEADER (/ name area str) (while (and (setq name (car (entsel "\nSelect a polyline : "))) (= (cdr (assoc 0 (entget name))) "LWPOLYLINE") (setq area (getpropertyvalue name "AREA")) (setq str (strcat "%<\\AcObjProp Object(%<\\_ObjId " (itoa (vla-get-objectID (vlax-ename->vla-object name))) ">%).Area \\f \"%lu2\">%" ) ) ) (command "_MLEADER" pause pause str) ) (princ) ) Il est également possible de créer un programme un peu plus complexe que celui-ci pour s'adapter au mieux à tes besoins mais il faudrait pour cela prendre un peu plus de temps, ou voir @lecrabe sortir un programme de son chapeau magique comme il sait si bien faire :3 EDIT : ou simplement un BonusCAD qui passe par là 🙂 Bisous, Luna
-
@CJury, je pense que tu auras plus de chance de trouver une réponse adaptée dans le forum dédié à Covadis : Forum COVADIS. Ici, il s'agit du forum AutoCAD 2020-2022, donc tu n'auras pas forcément des utilisateurs de Covadis qui passeront dans le coin. Autrement au vu du problème et sans grandes compétences sur le logiciel Covadis (mes seules expériences se limitent à 3h de formation), j'aurais tendance à penser qu'il provient de Covadis et non d'AutoCAD, car c'est l'objet lui-même lors de l'insertion qui possède ce fameux facteur. Il n'y a aucune raison qu'AutoCAD génère ce problème de lui-même. Donc cela provient sûrement d'un paramètre de Covadis, ou d'une erreur de compatibilité entre Covadis et AutoCAD qui prends en compte une variable système pour les coupes, mais pas pour les profils en long (ou inversement...). Bisous, Luna
-
Coucou, Perso j'utilise ce bloc, mais je ne sais pas s'il répond aux normes associées à ce type d'objet, donc à voir si chat correspond à ton besoin :3 Bisous, Luna echelle à crinoline face profil.dwg
-
Bloc-Action Réseau dans deux directions
Luna a répondu à un(e) sujet de rrobert dans AutoCAD 2020-2024
Coucou, J'avoue ne pas bien comprendre ce qui bloque (sans mauvais jeu de mots) avec les paramètres XY pour la définition du réseau... En exemple l'utilisation du paramètre XY pour gérer le réseau dans le sens X et/ou Y. Bisous, Luna Test.dwg- 2 réponses
-
Champ avec valeur provenant d'une Xref
Luna a répondu à un(e) sujet de litelsousa dans AutoCAD 2020-2024
Coucou, S'il s'agit uniquement de savoir s'il existe une valeur de champ permettant de récupérer la propriété d'un sous-objet d'une Xref, alors je dirais que non. En effet si l'on prend le champ nommé "Objet" (car il s'agit du seul permettant de faire cela) et que l'on clique sur le sous-objet dont on veut récupérer les infos, les propriétés sont celles de la référence externe uniquement. AutoCAD n'est pas capable de récupérer les propriétés d'un sous-objet (même problématique en soit qu'avec les références de blocs où l'on ne peut pas récupérer la propriété d'un sous-objet), uniquement de l'objet directement sélectionné. Autrement-dit, si je devais traduire sous forme d'AutoLISP, le champ nommé "Objet" utilise la fonction (entsel) pour récupérer la liste des propriétés de l'objet sélectionné, et non (nentsel), qui serait la fonction dont tu as besoin. Donc nativement parlant, la réponse est non, reste à déterminer si cela est possible par de la programmation. Mais pour cela, il nous faudrait plus de détails, comme par exemple : - Les informations sont-elles uniquement sous format de texte ? - Combien de champs doivent-être créés par fichier environ ? - ... Mais la première question qui me vient c'est "Existerait-il pas une alternative au problème ?", comme par exemple copier les informations en dur dans le fichier (via la commande _NCOPY) ou bien créer une liaison de données via un fichier Excel et ensuite récupérer les infos du tableau, ... ? Bref en fonction de la demande il peut y avoir plusieurs solutions, en identifiant correctement les contraintes (trop contraintes peuvent aussi entraîner à "pas de solutions !"). Bisous, Luna -
Je ne peux plus choisir le point de départ d'une copie ou d'un déplacement
Luna a répondu à un(e) sujet de rrobert dans AutoCAD 2020-2024
Coucou, Ne t'en fais pas @rrobert, j'ai exactement le même soucis (double validation intempestive, et une fois que le problème est apparu, chat le fait tout le temps jusqu'à ce que je redémarre AutoCAD). Donc il n'y a pas vraiment d'autres solutions que de fermer/ouvrir AutoCAD. Après ce qui est assez étrange c'est qu'en validant avec ESPACE, j'ai une double validation, et en validant avec ENTER, pas de soucis >n< @Maxime063, le problème ne vient pas du fait que l'on spamme la touche de validation, même en allant très lentement on a une double validation...Et le problème c'est que je n'ai toujours pas compris d'où vient le soucis (et en écrivant une fonction dans la ligne de commande, il y a bien 2 espaces au lieu d'un seul, d'où la double validation qui prend les valeurs par défaut ou annule automatiquement les commandes). Même en cherchant sur le NET je n'avais pas su trouver un problème similaire donc je suis bien contente (enfin pas vraiment mais bon) de ne plus être la seule 🙂 Bisous, Luna -
Coucou, Juste une remarque : ta dernière version a toujours la longueur du camion qui n'est pas bonne...tu n'as pas accroché ton paramètre linéaire correctement sur ta polyligne, donc pour une longueur de 10m (définie dans les propriétés) ton camion dessiné fait 9.98m !! De plus en modifiant le rayon de courbure du cerle, la poignée de rotation du camion se déplace avec un facteur différent que celui du camion. Ton paramètre d'inversion ne bouge pas non plus en fonction du rayon de courbure, donc il peut s'avérer trop éloigné ou trop faible en fonction de la taille du cercle... Bisous, Luna
-
coucou, Je peux éventuellement te proposer ceci (quelques corrections de ton bloc, notamment le paramètre de longueur qui n'était pas accroché à ta polyligne..). En revanche, concernant le réseau polaire, il ne me semble pas que cela soit faisable dans l'éditeur de bloc malheureusement (du moins je ne sais pas comment faire) donc au vu de l'état "simplifié" de ton bloc, je pense qu'il est tout-à-fait possible de créer un réseau polaire avec ton bloc comme source (ou bien une simple copie de ton bloc avec les mêmes propriétés mais un angle différent, ce qui te permet de sélectionner l'ensemble des blocs partageant le même point d'insertion pour modifier simultanément tes propriétés). Bref, tu as plusieurs solutions qui s'offrent à toi, mais je ne pense vraiment pas que l'on puisse directement intégrer le réseau polaire dans la définition de bloc...(cela t'aurait épargner les doublons de blocs mais bon...) Bisous, Luna Boc_Rayon_Courbe.dwg
-
Coucou, Je suis d'accord avec didier, le code n'est pas très clair (notamment avec les appels de variables j, i, listsommets, listgeoapp, ... qui pourraient être la source du problème). Si on part du principe que les variables déclarées précédemment sont juste, on peut déjà corriger le k ainsi : (repeat (setq k 9) ;; Définition de 'k' à la valeur max (setpropertyvalue (ssname listsommets j) ;; Nom d'entité à l'indice 'j' du jeu de sélection 'listsommets' (strcat "OBS" (itoa k)) ;; Nom de la propriété (ici l'étiquette d'attribut) (getpropertyvalue ;; Valeur de la propriété... (ssname listgeoapp i) ;; Nom d'entité à l'indice 'i' du jeu de sélection 'listgeoapp' (strcat "OBS" (itoa k)) ;; Nom de la propriété (ici l'étiquette d'attribut) ) ) (setq k (1- k)) ;; Incrémentation décroissante de 'k' jusqu'à 0 ) EDIT: je remarque que tu as de très nombreux appels (ssname), je te conseille d'alléger ton code en affectant les nom d'entités à des variables pour t'éviter cette écriture à base de (ssname) répétitifs et identiques :3 Bisous, Luna
-
Coucou, Bon n'ayant que trop peu de temps pour la programmation ces derniers temps, je n'ai pas vraiment pu explorer les listes DXF comme je l'aurais souhaité... Je pensais dans un premier temps gérer les filtres de propriétés via des (entmake), mais je n'ai pas pu aller bien loin et je n'avais pas le temps d'apprendre à utiliser les dictionnaires via (dictadd) &co. Du coup je me suis rapatrié sur la version (command) et en utilisant les fonctions de @(gile) pour récupérer la liste mais...au vu de la composition de la liste de sortie de (getfilters), je n'arrive pas à régurgiter uniquement le nom des filtres pour les supprimer via (command). Je ne maîtrise clairement pas les fonctions récursives donc je n'arrive pas à "décomposer" la liste pour ne conserver que les nom d'entités... Dans l'exemple ci-dessous, je voudrais passer de : ( ( ("*A1" . <Nom d'entité: 167a7796aa0>) ) ( ("*A2" . <Nom d'entité: 167a7796ac0>) ( ("*A1" . <Nom d'entité: 167a7796b00>) ) ( ("*A2" . <Nom d'entité: 167a7796b10>) ) ) ( ("*A3" . <Nom d'entité: 167a7796b20>) ) ( ("*A4" . <Nom d'entité: 167a7796b40>) ) ( ("*A5" . <Nom d'entité: 167a7796b60>) ) ( ("*A6" . <Nom d'entité: 167a7796b80>) ( ("*A1" . <Nom d'entité: 167a7796bc0>) ) ( ("*A2" . <Nom d'entité: 167a7796bd0>) ) ) ( ("*A7" . <Nom d'entité: 167a7796be0>) ) ( ("*A8" . <Nom d'entité: 167a7796c00>) ) ( ("*A9" . <Nom d'entité: 167a7796c20>) ( ("*A1" . <Nom d'entité: 167a7796c60>) ( ("*A1" . <Nom d'entité: 167a7796c90>) ) ) ) ) à : ( <Nom d'entité: 167a7796aa0> <Nom d'entité: 167a7796ac0> <Nom d'entité: 167a7796b00> <Nom d'entité: 167a7796b10> <Nom d'entité: 167a7796b20> <Nom d'entité: 167a7796b40> <Nom d'entité: 167a7796b60> <Nom d'entité: 167a7796b80> <Nom d'entité: 167a7796bc0> <Nom d'entité: 167a7796bd0> <Nom d'entité: 167a7796be0> <Nom d'entité: 167a7796c00> <Nom d'entité: 167a7796c20> <Nom d'entité: 167a7796c60> <Nom d'entité: 167a7796c90> ) J'ai eu beau essayer des lignes de codes, je n'y arrive pas...Donc même si je n'aime pas chat : avez-vous une fonction qui permettrait de faire cela ? Il me faut vraiment apprendre à maîtriser les fonctions récursives et les dictionnaires à minima mais le temps commence à manquer malheureusement... Bisous, Luna
-
Coucou, La commande FUSCALQUE possède une boucle lors de la sélection des calques à fusionner (que se soit la sélection dessin ou parmi la liste des calques). Donc si tu ne fais pas une validation à vide, la commande FUSCALQUE ne passera jamais à l'étape "Sélection du calque cible". Je pense que ton soucis vient de là. C'est juste un manque de clarté vis-à-vis de cette commande. Autrement, il est également possible de ne pas lancer la commande depuis la ligne de commande mais depuis le gestionnaire de calques. Il te faut sélectionner les calques à fusionner, clic droit, choisir l'option "Fusionner le ou les calques sélectionnés en..." puis sélectionner le calque cible ;3 Bisous, Luna
-
Oki, Donc pour commencer, tu as deux paramètres de distance nommé "Tapis" et "Prof. bac" dans ton bloc, mais aucune action ne leur a été affecté...Donc il faut commencer par chat :3 Ensuite, comme je l'ai déjà expliqué sur ces deux sujets (ici et là), il n'est pas possible d'avoir un champs dynamique pointant vers un attribut ou une propriété dynamique directement dans la définition de bloc. Pour ton cas, la réponse bidouille devrait te convenir car il s'agit d'une distance affectée à un paramètre de distance. J'ai donc ajouté 3 polylignes dans le calque "non imprimable" et affecté la valeur du champs sur la propriété de longueur de ces polylignes. Ci-joint le bloc modifié, dit-moi si cela te convient (il n'y a pas vraiment d'autre solution par contre ^^"). Il te faudra sûrement reprendre les actions d'étirements que j'ai faite pour correspondre à ton besoin ;3 Bisous, Luna Drawing1.dwg
-
Coucou, Serait-il possible de nous envoyer un .dwg de ton bloc ? Ce paramètre de distance est-il visible dans toutes les visibilités ? Bisous, Luna
-
Exclure d'un filtre des propriétés de calque
Luna a répondu à un(e) sujet de rrobert dans AutoCAD 2020-2024
Coucou, Ceci devrait te suffire : https://help.autodesk.com/view/ACD/2016/FRA/?guid=GUID-026A95F8-4EBB-48BD-8C8C-15B381DB4CCA Donc il te faut écrire "~*TRAVAIL*" il me semble. EDIT : @(gile) toujours au top ! ♥w♥ Bisous, Luna -
Plusieurs occurrences d'attribut dans un bloc
Luna a répondu à un(e) sujet de rrobert dans AutoCAD 2020-2024
Coucou, Il me semble avoir déjà cherché à faire cela, sans succès... (voir ce sujet) Le champs de ton MTEXT doit faire référence à la valeur de ton attribut de bloc, donc autrement-dit ton champ doit faire référence à l'objet "Référence de bloc" et à la propriété "AttributeName" (correspondant ainsi à sa valeur actuelle pour la référence de bloc actuelle). Or en définissant le champ dans un MTEXT directement dans la définition de bloc, tu ne peux pas accéder à la valeur d'un attribut d'une référence de bloc particulière (c'est le problème des références circulaires, si jamais chat te parle)... Il faut voir la définition de bloc comme étant "Mère" et les références comme étant "Filles". Les filles héritent donc de la définition d'attribut de leur mère mais leur propriété est unique entre chaque filles. Il n'est donc pas possible de définir la propriété de la mère à partir des filles. L'unique solution serait d'avoir le MTEXT en dehors des références de blocs pour pouvoir être dans le bon espace de travail, à savoir l'espace Objet (et non l'éditeur de bloc) mais du coup on perd tout l'intérêt de la référence de bloc... Bref c'est un sujet qui serait en effet intéressant car avoir une seule définition d'attribut pouvant apparaître à plusieurs endroits d'une référence, c'est courant mais actuellement ce n'est pas possible (ou du moins je ne vois pas comment faire pour y parvenir simplement). Bisous, Luna -
Problème résolu donc ?
-
Vouih parfois, c'est préférable de vérifier car certaines "options" programmables ne sont pas forcement atteignables en natif ^^" C'est pour chat que je préfère regarder avant ! Bisous, Luna
-
Coucou, Alors, après vérification, les style de lignes de repères ne comporte aucune options concernant le masque d'arrière-plan donc c'est propre aux ligne de repères avec texte multiple. Cependant il est tout à fait possible d'avoir un arrière-plan dans tes textes de lignes de repère. Depuis la palette de propriétés, on peut déjà spécifier si "Oui" ou "Non" on souhaite un masque d'arrière-plan, mais on ne peut accéder au propriétés de ce masque depuis la palettes des propriétés de la ligne de repère. Pour cela, tu dois éditer le texte de ta ligne de repère (donc on ne peut modifier les lignes qu'une par une) et selon si tu utilises le ruban ou non, tu as l'option "Masque". Si tu utilises le ruban, cette option "Masque" est accessible dans la zone "Style" (tout à gauche) de l'onglet "Editeur de texte" et cela t'ouvrira la fenêtre pour paramétrer la couleur et le facteur de décalage. Si tu n'utilises pas le ruban et que tu as donc un bandeau nommé "Format du texte" qui se balade sur ton écran, tu cliques sur la petite flèche pointant vers le bas (tout à droite en haut de ce bandeau) et tu choisis l'option "Masque d'arrière-plan..." dans la liste pour ouvrir cette même fenêtre de paramétrage de ton masque d'arrière-plan. Avec cette méthode, il n'est pas possible de modifier plusieurs lignes de repères existantes en même temps car tu passes par l'éditeur de texte (qui est donc nominatif) et non par la palette de propriétés qui s'applique à un ensemble d'objet sélectionnés. Cependant il est possible de faire ce changement sur plusieurs lignes en passant par la programmation, à voir selon ton besoin. Bisous, Luna
-
Coucou, Je ne pourrais pas vraiment t'aider en VBA, mais pourquoi créer un second jeu de sélection pour le remplir si l'élément est bon ? Je pense qu'un simple truc comme chat ferait l'affaire (WARNING : je suis nulle en VBA donc je me contente simplement de copier ce que je comprends, c'est donc potentiellement faux à 90%) If bloc.EffectiveName /= nom_bloc_ref Then selection.RemoveItems bloc End If Bisous, Luna
-
Coucou, En effet, un objet n'a aucune raison d'être modifié entre deux sessions si on n'y touche pas... Pour commencer, sur ta première image j'ai l'impression que ta hachure n'est pas associative. L'était-elle au moment de sa création ? Les autres hachures le sont donc la seule explication que je pourrais avoir pour la première du moins, c'est que le contour a été modifié et que la hachure a perdu son associativité à ce moment là...Elle aurait ainsi pris en compte une modification de contour avant de se "figer" sur une erreurs, comme par exemple la suppression d'un sommet. Personnellement, je pense qu'il est préférable de générer des hachures en sélectionnant des objets car les contours ne dépendent ainsi que de quelques objets clairement identifiés, alors qu'avec la détection d'îlots, le risque de modification est plus grand. Mise à part cette modification d'un objet de contour (comme une suppression par exemple, un déplacement, etc...), je n'ai pas de solution à te proposer car je n'ai jamais rencontré ce soucis. Du coup petite question : as-tu fermer/réouvert ton .dwg juste après avoir créé tes hachures ou bien tu as effectué des manip' entre les deux ? Bisous, Luna
-
Coucou, Alors pour commencer, les codes DXF 20 et 30 (respectivement Y et Z) n'existent pas vraiment dans la liste DXF d'un objet...Pour cela, je te conseil de consulter les objets directement via (entget (car (entsel))) ! En réalité, les codes 20 et 30 sont "contenus" dans le code DXF 10 de manière implicite. Le code DXF 10 se compose ainsi : (10 X Y Z), autrement dit, tu as les 3 axes. Le code -4 avec pour valeur "*,>=,*" permet de définir les valeurs acceptable pour le code DXF 10 suivant. Ainsi cela permet de définir que l'on accepte n'importe quelle valeur pour les coordonnées en X et en Z (la virgule permet de séparer les axes) grâce à * (donc on peut mettre n'importe quelle valeur dans le code DXF 10 suivant pour ces axes, car elles ne comptent pas). Et on n'acceptent ici que les valeurs en Y qui sont supérieures ou égales à la valeur précisée dans le code DXF 10 suivant cette paire pointée. Encore une fois, @(gile) est plus rapide ^^" Pour le coup, l'aide en LISP concernant la fonction (ssget) te donneras toutes les réponses que tu souhaites car c'est le même fonctionnement qu'en LISP. http://www.lee-mac.com/ssget.html Bisous, Luna
-
Que préférez-vous comme environnement? Clair (actuel) ou Sombre (fond noir et typo claire)
Luna a répondu à un(e) sujet de Cadmin dans CADxp, comment ça marche?
-
Que préférez-vous comme environnement? Clair (actuel) ou Sombre (fond noir et typo claire)
Luna a répondu à un(e) sujet de Cadmin dans CADxp, comment ça marche?
@didier faut passer au magenta, c'est lisible aussi bien sur du blanc que du bleu 🙂 En tous cas, merci pour ce travail !! Seul petit bémol, il n'y a pas de nuance de couleur entre l'arrière plan et les messages, donc il est parfois difficile de distinguer la fin et le début des messages de chacun >w< J'ai également remarqué que le site est passé intégralement en français, donc gros travail de traduction également ! Bisous, Luna -
@rrobert, je ne sais pas si tu as bien compris donc je préfère insister juste au cas où : Les versions LT ne supporte AUCUNE programmation, autrement dit, que se soit en VBA ou en LISP, les versions LT n'y auront pas le droit. La seule solution si tu ne veux pas être le seul à en profiter, c'est de creuser le sujet en passant par un script, ou du DIESEL...(ou bien en achetant des licences full pour tout le monde, mais chat fait cher le programme !) Je préfère insister car ta phrase prête à confusion et semble indiquer que tu comptes programmer en LISP, ce qui ne solutionnera pas le problème. Si tu veux développer un programme pour toi uniquement, libre à toi de choisir le VBA ou le LISP en fonction de tes habitudes (les fonctionnalités sont très similaire, c'est juste le langage qui est différent) mais si ton programme à pour vocation d'être utilisé par tes collègues (donc LT), alors autant faire directement tous tes programmation en script/DIESEL qui fonctionneront aussi bien sur une version LT que full ! Tu risques de perdre du temps à devoir écrire le même programme dans deux langages différents (voir 3 si tu veux revenir en version LISP alors que tu as commencé en VBA). Bisous, Luna
