Aller au contenu

Classement

Contenu populaire

Affichage du contenu avec la meilleure réputation depuis le 21/03/2025 dans toutes les zones

  1. 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
  2. Bonjour à tous, Civil 3D 2026 est disponible et nous avons rédigé un article complet sur les nombreuses nouveautés ici : Village BIM - Nouveautés Civil 3D 2026 Au programme : Nouvel outil de visualisation 3D Travail collaboratif avec les surfaces Améliorations Dynamo pour Civil 3D De nombreuses fonctionnalités pour l'assainissement Et plus encore...
    3 points
  3. La suite ici : 😉 https://www.caderix.com/journal/spip.php?article548
    2 points
  4. 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, lecrabe
    1 point
  5. 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, Maxime
    1 point
  6. 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 Olivier
    1 point
  7. 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
  8. Bonjour @angelique, Voici le lisp, RINS, de Patrick_35, et le lisp INSEDIT, de Gile.😉 Les 2, font le job 😀 INSEDIT.zip RINS_V320.7z
    1 point
  9. Salut, J'ai fait une routine il y très longtemps pour le même problème ;########################################################################### ;# Copyright (C) 04-2011 Vincent PRELAT # ;# This program is free software: you can redistribute it and/or modify # ;# it under the terms of the GNU General Public License as published by # ;# the Free Software Foundation, either version 3 of the License, or # ;# any later version. # ;# This program is distributed in the hope that it will be useful, # ;# but WITHOUT ANY WARRANTY; without even the implied warranty of # ;# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # ;# GNU General Public License for more details. # ;# You should have received a copy of the GNU General Public License # ;# along with this program. If not, see <http://www.gnu.org/licenses/>. # ;########################################################################### ; Redefinit le point de base d'un bloc sans le deplacer (vl-load-com) ;; getMatrixRot Retourne la matrice d'une rotation (defun getMatrixRot (rot) (list (list (cos rot) (- (sin rot)) 0 0) (list (sin rot) (cos rot) 0 0) (list 0 0 1 0) (list 0 0 0 1) ) ) ;; getMatrixEch Retourne la matrice d'une echelle (defun getMatrixEch (ech) (list (list (nth 0 ech) 0 0 0) (list 0 (nth 1 ech) 0 0) (list 0 0 (nth 2 ech) 0) (list 0 0 0 1) ) ) ;; getMatrixTranst Retourne la matrice d'une translation (defun getMatrixTrans (trans) (list (list 1 0 0 (nth 0 trans)) (list 0 1 0 (nth 1 trans)) (list 0 0 1 (nth 2 trans)) (list 0 0 0 1) ) ) ;; mxv Apply a transformation matrix to a vector by Vladimir Nesterovsky (defun mxv (m v) (mapcar '(lambda (row) (apply '+ (mapcar '* row v))) m) ) ;; Transpose une matrice Doug Wilson (defun trp (m) (apply 'mapcar (cons 'list m)) ) ;; mxm Multiply two matrices by Vladimir Nesterovsky (defun mxm (m q) (mapcar (function (lambda (r) (mxv (trp q) r))) m) ) ;;; butlast Retourne la liste privée du dernier élément (defun butlast (lst) (reverse (cdr (reverse lst))) ) ;; REMOVE-I ;; Retourne la liste privée de l'élément à l'indice spécifié (premier élément = 0) ;; Arguments : la liste et l'indice de l'élément à supprimer (defun remove-i (ind lst) (if (or (zerop ind) (null lst)) (cdr lst) (cons (car lst) (remove-i (1- ind) (cdr lst))) ) ) ;;; VXV Retourne le produit scalaire (réel) de deux vecteurs (defun vxv (v1 v2) (apply '+ (mapcar '* v1 v2)) ) ;; V^V (gile) ;; Retourne le produit vectoriel (vecteur) de deux vecteurs ;; Arguments : deux vecteurs (defun v^v (v1 v2) (list (- (* (cadr v1) (caddr v2)) (* (caddr v1) (cadr v2))) (- (* (caddr v1) (car v2)) (* (car v1) (caddr v2))) (- (* (car v1) (cadr v2)) (* (cadr v1) (car v2))) ) ) ;; M+M ;; Additionne 2 matrices ;; Arguments : deux matrices (defun m+m (m1 m2) (mapcar '(lambda (v1 v2) (mapcar '+ v1 v2)) m1 m2) ) ;; MXS ;; Multiplie une martice par un nombre ;; Arguments : une matrice et un nombre (defun mxs (m s) (mapcar '(lambda (v) (vxs v s)) m)) ;; IMAT ;; Crée une matrice d'identité de dimension n ;; Argument ;; n : la dimension de la matrice (defun Imat (d / i n r m) (setq i d) (while (<= 0 (setq i (1- i))) (setq n d r nil) (while (<= 0 (setq n (1- n))) (setq r (cons (if (= i n) 1.0 0.0) r)) ) (setq m (cons r m)) ) ) ;; INVERSEMATRIX ;; Inverse une matrice carrée (méthode Gauss-Jordan) ;; Argument: la matrice ;; Retour : la matrice inverse ou nil (si non inversible) (defun InverseMatrix (mat / col piv row res) (setq mat (mapcar '(lambda (x1 x2) (append x1 x2)) mat (Imat (length mat)))) (while mat (setq col (mapcar '(lambda (x) (abs (car x))) mat)) (repeat (vl-position (apply 'max col) col) (setq mat (append (cdr mat) (list (car mat)))) ) (if (equal (setq piv (caar mat)) 0.0 1e-14) (setq mat nil res nil ) (setq piv (/ 1.0 piv) row (mapcar '(lambda (x) (* x piv)) (car mat)) mat (mapcar '(lambda (r / e) (setq e (car r)) (cdr (mapcar '(lambda (x n) (- x (* n e))) r row)) ) (cdr mat) ) res (cons (cdr row) (mapcar '(lambda (r / e) (setq e (car r)) (cdr (mapcar '(lambda (x n) (- x (* n e))) r row)) ) res ) ) ) ) ) (reverse res) ) (defun c:insredef (/ ent bl rot ech invech ptnouv ptins vect vect2 mat matrot matech debut nb nb1 allbl pt n i namebl) (setvar "cmdecho" 0) (command "_.undo" "_m") (setq ent (car (entsel "Selectionner le bloc a modifier :"))) (if (/= ent nil) (progn (setq bl (cdr (assoc 2 (entget ent)))) ;; Calcul du vecteur de deplacement dans le scu du bloc (setq ptins (cdr (assoc 10 (entget ent)))) (setq rot (cdr (assoc 50 (entget ent)))) (setq ech (list (cdr (assoc 41 (entget ent))) (cdr (assoc 42 (entget ent))) (cdr (assoc 43 (entget ent))) )) (vla-highlight (vlax-ename->vla-object ent) :vlax-true) (setq ptnouv (getpoint "Pointez le nouveau point de base du bloc :")) (vla-highlight (vlax-ename->vla-object ent) :vlax-false) (setq ptnouv (trans ptnouv 1 0)) (setq vect (mapcar '(lambda (x y) (- y x)) ptins ptnouv)) (setq invech (mapcar '(lambda (x) (/ 1 x)) ech)) (setq matech (getMatrixEch invech)) (setq matrot (getMatrixRot (- rot))) (setq mat (mxm matech matrot)) (setq vect (butlast (mxv mat vect))) ;;_fin calc vect dep ;; Modif definition du bloc (setq debut 1) (while (/= namebl bl) (setq i (tblnext "block" debut) debut nil) (setq namebl (cdr (assoc 2 i))) ) (if (/= i nil) (progn (setq n (cdr (assoc -2 i))) (while n (if (and (/= (cdr (assoc 0 (entget n))) "VERTEX") (/= (cdr (assoc 0 (entget n))) "COVAPTSEL")) (vla-move (vlax-ename->vla-object n) (vlax-3d-point (list 0.0 0.0 0.0)) (vlax-3d-point (mapcar '(lambda (x) (- x)) vect))) ) (setq n (entnext n)) (if (/= n nil) (if (= (cdr (assoc 0 (entget n))) "SEQEND") (setq n nil)) ) ) ;_while )) ;_if ;; Fin modif bloc ;; Deplace les blocs (setq allbl (ssget "x" (list (cons 2 bl)))) (setq nb 0 nb1 (sslength allbl)) (while (< nb nb1) (setq ent (ssname allbl nb)) (setq ptins (cdr (assoc 10 (entget ent)))) (setq rot (cdr (assoc 50 (entget ent)))) (setq ech (list (cdr (assoc 41 (entget ent))) (cdr (assoc 42 (entget ent))) (cdr (assoc 43 (entget ent))) )) (setq matech (getMatrixEch ech)) (setq matrot (getMatrixRot rot)) (setq mat (mxm matech matrot)) (setq vect2 (butlast (mxv mat vect))) (setq pt (mapcar '(lambda (x y) (+ x y)) ptins vect2)) (entmod (subst (cons 10 pt) (assoc 10 (entget ent)) (entget ent))) (setq nb (+ nb 1)) ) ;; Fin deplace blocs )) ;;_if (/= ent nil) )
    1 point
  10. 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.
    1 point
  11. Salut, Il m'a semblé que la question pouvait être un bon exemple pour une palette C#/WPF. Télécharger LayoutPaletteSetup.msi. Débloquer le fichier et lancer l'installation. La commande LAYOUTS affiche la palette (compatible toutes versions d'AutoCAD pleines ou verticales depuis 2013). Pour ceux que ça intéresse, le code (de plus amples explications à propos des interfaces utilisateur en .NET sur cette page). La classe CustomPaletteSet définit un jeu de palette. using Autodesk.AutoCAD.Windows; using System; using AcCoreAp = Autodesk.AutoCAD.ApplicationServices.Core.Application; namespace LayoutPaletteNetCore { internal class CustomPaletteSet : PaletteSet { static bool wasVisible; public CustomPaletteSet() : base("Layouts", "LAYOUTS", new Guid("{92007042-8476-48DB-9003-AD5AA0E47C98}")) { Style = PaletteSetStyles.ShowAutoHideButton | PaletteSetStyles.ShowCloseButton | PaletteSetStyles.ShowPropertiesMenu; MinimumSize = new System.Drawing.Size(150, 450); AddVisual("Layouts", new LayoutControl()); var docs = AcCoreAp.DocumentManager; docs.DocumentBecameCurrent += (s, e) => Visible = e.Document != null && wasVisible; docs.DocumentCreated += (s, e) => Visible = wasVisible; docs.DocumentToBeDeactivated += (s, e) => wasVisible = Visible; docs.DocumentToBeDestroyed += (s, e) => { wasVisible = Visible; if (docs.Count == 1) Visible = false; }; } } } Le fichier PaletteControl.xaml définit le contrôle WPF (palette) <UserControl x:Class="LayoutPaletteNetCore.LayoutControl" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:local="clr-namespace:LayoutPaletteNetCore" mc:Ignorable="d" d:DesignHeight="450" d:DesignWidth="800"> <Grid Background="WhiteSmoke"> <ListBox Margin="5" ItemsSource="{Binding LayoutList}" SelectionMode="Single" SelectedItem="{Binding CurrentLayout}"/> </Grid> </UserControl> Le fichier PaletteControl.xaml.cs définit la logique d'interaction du contrôle using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.DatabaseServices; using System.Collections; using System.Collections.ObjectModel; using System.ComponentModel; using System.Linq; using System.Threading.Tasks; using System.Windows.Controls; using AcCoreAp = Autodesk.AutoCAD.ApplicationServices.Core.Application; namespace LayoutPaletteNetCore { public partial class LayoutControl : UserControl, INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; protected void NotifyPropertyChanged(string propertyName) => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); private string currentLayout; public ObservableCollection<string> LayoutList { get; private set; } public string CurrentLayout { get { return currentLayout; } set { currentLayout = value; SetCurrentLayout(); NotifyPropertyChanged(nameof(CurrentLayout)); } } public LayoutControl() { InitializeComponent(); DataContext = this; LayoutList = new ObservableCollection<string>(); AcCoreAp.DocumentManager.DocumentActivated += OnDocumentActivated; var doc = AcCoreAp.DocumentManager.MdiActiveDocument; if (doc != null) { UpdateLayouts(); HandleEvents(LayoutManager.Current); } } private async void SetCurrentLayout() { var docs = AcCoreAp.DocumentManager; await docs.ExecuteInCommandContextAsync( (_) => { LayoutManager.Current.CurrentLayout = CurrentLayout; return Task.CompletedTask; }, null); } private void OnDocumentActivated(object sender, DocumentCollectionEventArgs e) { UpdateLayouts(); HandleEvents(LayoutManager.Current); } private void HandleEvents(LayoutManager layoutManager) { layoutManager.LayoutCopied += (_, _1) => UpdateLayouts(); layoutManager.LayoutCreated += (_, _1) => UpdateLayouts(); layoutManager.LayoutRemoved += (_, _1) => UpdateLayouts(); layoutManager.LayoutRenamed += (_, _1) => UpdateLayouts(); layoutManager.LayoutsReordered += (_, _1) => UpdateLayouts(); layoutManager.LayoutSwitched += (_, _1) => CurrentLayout = layoutManager.CurrentLayout; } private void UpdateLayouts() { var db = HostApplicationServices.WorkingDatabase; using (var tr = new OpenCloseTransaction()) { LayoutList.Clear(); var layouts = ((DBDictionary)tr.GetObject(db.LayoutDictionaryId, OpenMode.ForRead)) .Cast<DictionaryEntry>() .Select(e => (Layout)tr.GetObject((ObjectId)e.Value, OpenMode.ForRead)) .OrderBy(l => l.TabOrder) .Select(l => l.LayoutName); foreach (string layoutName in layouts) { LayoutList.Add(layoutName); } CurrentLayout = LayoutManager.Current.CurrentLayout; } } } } La commande pour afficher la palette. using Autodesk.AutoCAD.Runtime; [assembly: CommandClass(typeof(LayoutPaletteNetCore.Commands))] namespace LayoutPaletteNetCore { public class Commands { static CustomPaletteSet palette; [CommandMethod("LAYOUTS")] public static void ShowLayoutsPalette() { if (palette == null) { palette = new CustomPaletteSet(); } palette.Visible = true; } } }
    1 point
  12. 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
  13. Bonjour @sagaff, Civil 3D possède un module spécifique pour les réseaux sous pression, donc idéal pour vos réseaux d'eau potable. Vous trouverez 3 vidéos tutoriel ici : Village BIM - Modéliser des réseaux sous pression avec Civil 3D Civil 3D inclus également un module de réseau gravitaire pour l'assanissement (la nouvelle version Civil 3D 2026 inclus d'ailleurs des nouvelles fonctionnalités très intéressantes). Je vous confirme également que l'on peut importer du DGN dans AutoCAD.
    1 point
  14. Avis aux programmeurs, le code source du BASIC Altair qui a lancé Microsoft est disponible ! https://dessein-tech.com/t/microsoft-a-50-ans/3250/2 Sur son blog officiel, Bill Gates a bien sûr voulu parler de ce qui a changé le monde de l’informatique. Alors, à 19 ans, Bill Gates, avec son pote Paul Allen, ils ont développé un logiciel, Altair BASIC, pour l’Altair 8800, le premier ordinateur personnel américain, fabriqué par la société MITS. Pour fêter ça, Bill Gates te permet de télécharger gratuitement le code source d’Altair BASIC sur son blog. C’est le tout premier logiciel de la firme, un moment historique pour les amateurs de technologie ! Ce code est écrit en langage assembleur pour le microprocesseur Intel 8080.
    1 point
  15. Hello Waouh j en ai bouffe de l Assembleur 8 bits 8080/8085 et Z80 dans les annees 80 ! Et aussi des cartes perforees en Cobol et Fortran ! Bon WE, Bye, lecrabe
    1 point
  16. Justement, ça m'a l'air de correspondre à ta demande, car tu pourras avoir le listing immédiatement ?
    1 point
  17. 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
  18. Hello On garde le format DWG2018 : MERCI ! Par contre on a perdu les fonds de carte BingMaps et donc on a seulement les Fonds de carte ESRI comme avec la 2025 ! En théorie BingMaps devrait fonctionner jusqu en 2028 mais Autodesk a décidé d arrêter en 2025 avec la version 2026 ! Bien entendu les "anciens" DWGs avec les cartes BingMaps activees fonctionnent et affichent toujours les cartes BM ... DONC SVP veuillez garder une 2025, 2024, 2023, etc ... https://help.autodesk.com/view/ACD/2026/ENU/?guid=GUID-FAB1960D-49C1-4A12-B128-5511F7889AB9 https://help.autodesk.com/view/ACD/2026/ENU/?guid=GUID-4A458300-2D7E-401F-8B6A-7A6129E4DDAB https://help.autodesk.com/view/ACD/2026/ENU/?guid=GUID-037BF4D4-755E-4A5C-8136-80E85CCEDF3E ---- ACAD 2026 French ---- https://help.autodesk.com/view/ACD/2026/FRA/ ---- ACAD LT 2026 French ---- https://help.autodesk.com/view/ACDLT/2026/FRA/ ---- AutoCAD MAP 2026 ---- https://help.autodesk.com/view/MAP/2026/ENU/?guid=GUID-6A5D1296-483C-41C2-83C1-44AA5DA77FFB ---- AutoCAD PLANT 2026 ---- https://help.autodesk.com/view/PLNT3D/2026/ENU/?guid=GUID-384C71E7-9012-48B1-95B2-D4C42EBCF423 ---- AutoCAD Architectural 2026 ---- https://help.autodesk.com/view/ARCHDESK/2026/ENU/ ---- AutoCAD MEP 2026 ---- https://help.autodesk.com/view/BLDSYS/2026/ENU/?guid=GUID-E833B312-0F36-447D-B2A6-1F7F36CEABD2 ---- AutoCAD Electrical 2026 ---- https://help.autodesk.com/view/ACAD_E/2026/ENU/?guid=GUID-9FE2D1C0-E1F2-414F-8672-43E001814EBE ---- AutoCAD Mechanical 2026 ---- https://help.autodesk.com/view/AMECH_PP/2026/ENU/?guid=GUID-7258AC18-B4D4-4B03-A61C-6C68893FA0EA ---- System Requirements for AutoCAD 2026 (& ToolsSets) ---- https://www.autodesk.com/support/technical/article/caas/sfdcarticles/sfdcarticles/System-requirements-for-AutoCAD-2026-including-Specialized-Toolsets.html ---- Les Nouveautes d AutoCAD 2026 sur Village-BIM ---- https://village-bim.fr/2025/03/autocad-2026-est-disponible-quelles-nouveautes/ ---- Les Nouveautes d AutoCAD CIVIL 3D 2026 sur Village-BIM ---- https://village-bim.fr/2025/04/nouveautes-civil-3d-2026/ En attendant la suite ... Bye, lecrabe
    1 point
  19. Bonjour, Est-ce qu'il existe une option permettant de sauvegarder les "Options de calcul et dessin" par projet ? Je m'explique. Dans un fichier DWG, on peut avoir plusieurs projets plateforme, et on ne veut pas forcément les mêmes calculs et dessin d'un projet à l'autre. Exemple, pour le projet A, je veux MNT plateforme+talus+TN et pas de barbules de talus, mais pour le projet B, je ne veux que plateforme+talus et polyligne 3D de contour de plateforme. Ce n'est pas vraiment pratique de devoir changer les options à chaque calcul. Et pire, d'un fichier à un autre les options peuvent être complétement différentes. Alors vérifier qu'on a coché les bonnes cases sur un projet qui à plusieurs mois devient un casse tête. Merci.
    1 point
  20. Bonjour @FredGL J'ai retrouvé un truc et je l'ai enjolivé avec des cases d'alerte pour donner le résultat. C'est un peu plus "moderne" mais surtout ça prévient l'utilisateur qu'il a demandé la superficie d'une (ou plusieurs) polyligne(s) non close. Testé sur LT 2024 -> fonctionnel Amicalement Polyligne-2d-Addition-Superficies.lsp
    1 point
  21. @CTZen Pour le texte, il suffit que la présentation nommée MODELE intègre un champ qui contient la variable CTAB, comme ça c'est automatique. Olivier
    1 point
  22. Salut Invité UTILISATEUR 1 Si @lecrabe se permet d'insister, c'est que tu as posté dans le forum dédié à AutoCAD LT et que tu dis avoir AutoCAD. Donc quelle est la bonne information? Car selon la plate-forme (LT ou Complète) et selon la version, les réponses potentielles seront complètement différentes. Olivier
    1 point
  23. Bonjour @CTZen Voici ma proposition : ;; gc:lst2str de Gilles CHANTEAU, merci à lui. ;; Concatène une liste de chaînes et un séparateur en une chaine ;; Arguments : lst : la liste // sep : le séparateur (defun gc:lst2str (lst sep) (apply 'strcat (cons (car lst) (mapcar (function (lambda (x) (strcat sep x))) (cdr lst)) ) ) ) (defun c:ctzen ( / calq temp lstcal lsttemp) (setvar "clayer" "0") (setq calqo (getvar "clayer")) (setq calq (list (cdr (assoc 2 (tblnext "LAYER" T))))) (while (setq tempo (tblnext "LAYER")) (setq calq (append (list (cdr (assoc 2 tempo))) calq)) ) (setq lstcal (cdr (reverse calq))) (setq n -1) (repeat (length lstcal) (setq calq (nth (setq n (1+ n)) lstcal)) (setq lsttemp (gc:lst2str (vl-remove calq lstcal) ",")) (command "_layout" "_c" "MODELE" calq) (command "_ctab" calq) (command "espaceo") (command "_VPLAYER" "_F" lsttemp "c" "") (command "espacep") (setvar "clayer" calq) (command "_text" '(12 184) "5" "0" calq) (setvar "clayer" calqo) ) (command "_ctab" "MODELE") )
    1 point
  24. Bonjour @CTZen, Essaie avec ça (defun C:CTZEN ( / bFirst oLayer sLayerName) (setq bFirst T) (while (setq oLayer (tblnext "LAYER" bFirst)) (if bFirst (setq bFirst nil)) (setq sLayerName (cdr (assoc 2 oLayer))) (if (/= sLayerName "0") (progn (command "-PRESENTATION" "C" "MODELE" sLayerName) (setvar "CTAB" sLayerName) (command "ESPACEO") (command "fcalque" "g" "*" "" "li" sLayername "" "") (command "ESPACEP") (setvar "TILEMODE" 1) ) ) ) ) Olivier
    1 point
  25. Sauf si tu achètes la licence à 8k€ + coût annuel à 1600 et ca devient plus intéressant qu'un coût annualisé.
    1 point
  26. Bonjour, première idée : faire une extraction de donnée avec la commande EXTRACTDONNEES. Elle te permet de générer un fichier Excel avec tout plein de données, donc l'état de visibilité des blocs dynamique.
    1 point
  27. Hello https://village-bim.fr/infrastructure/ Bye, lecrabe
    1 point
  28. Bonjour, Quand tu parle de "cache", je pense que tu fais allusion au "masque d'arrière plan". Pour palier à ton problème, soit lors de la création du MTEXT tu définie ta largeur à 0 (le masque est alors ajusté automatiquement à la longueur du texte), soit après coup tu mets la largeur à 0.0 Comme il n'est pas possible de changer la largeur dans le panneau de propriété, ce petit lisp te permettra de le faire. (defun c:LARG0 (/ ss i text) (if (setq ss (ssget '((0 . "MTEXT")))) (repeat (setq i (sslength ss)) (setq text (ssname ss (setq i (1- i)))) (if (< 0.0 (getpropertyvalue text "Width")) (progn (if (/= (getpropertyvalue text "ColumnType") 0) (setpropertyvalue text "ColumnType" 0) ) (setpropertyvalue text "Width" 0.0) ) ) ) ) (princ) )
    1 point
×
×
  • 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é