La Lozère Posté(e) le 11 octobre 2022 Posté(e) le 11 octobre 2022 Bonjour, Pensez-vous qu'il soit possible de quelques manières que ce soit de créer une palette personnalisée DANS les palettes d'outils reprenant l'ensemble des onglets des présentations sous forme de liste ? J'ai déjà plusieurs palettes d'outils (gabarit texte, cote, lignes de repère, Lisp, Panneaux de signa, blocs divers, etc.), et ce que je cherche, c'est une nouvelle palette avec les présentations nommées, cliquables pour passer de l'une à l'autre et qui se mettrait à jour automatiquement à jour tant pour les dénominations que l'ordre. Je sais, qu'il y a divers lisp qui traine ici ou là avec des boites de dialogues plus ou moins complète (exemple ONG de Patrick_35 ou ICI), ou que certains proposent des prog spécifique (exemple ICI et ICI) permettant de faire plein de chose. Moi je cherche quelque chose de très simple pour visualiser les noms des présentations et de passer de l'une à l'autre, car la zone d'onglets est parfois un peu petite. Ci-dessous un grossier photo montage pour illustrer. Merci à vous. Citer www.cad-is.fr Autocad Map 2021 - Covadis/Autopiste V18.3d Pisser sous la douche ne suffira pas
Curlygoth Posté(e) le 11 octobre 2022 Posté(e) le 11 octobre 2022 créer des boutons dynamiquement avec le lien (ou ligne macro qui renvoie vers la présentation du nom) Je suis pas expert en création de bouton dynamique malheureusement... Citer Mon site Web (en cours de construction) : Site DA-CODE de @didier
Invité Miss Dlys Posté(e) mercredi à 12:32 Posté(e) mercredi à 12:32 Bonjour, je déterre un peu le sujet car travaillant en permanence en jonglant sur 250 présentations c'est vite une galère. Avez vous trouvé une (des) solutions ? En Lisp, Macro, ahk, peu importe, j'achète 😛 Citer
Fraid Posté(e) mercredi à 14:10 Posté(e) mercredi à 14:10 Bonjour, Il me semble que c'est trop lourd de créer / mettre à jours une palette à chaque dessin ouvert ou spécialement pour certain. Il y a le menu burger (4 lignes à gauche de l'onglet objet) qui assure de pouvoir accéder aux autres onglets. Cordialement Citer https://github.com/Fraiddd
didier Posté(e) mercredi à 14:43 Posté(e) mercredi à 14:43 250 présentations !!!!! Sérieux ? La limite étant de 255, allez encore un petit effort… Citer Éternel débutant… Mon site perso : Programmer dans AutoCAD
lecrabe Posté(e) mercredi à 15:26 Posté(e) mercredi à 15:26 Hello Et si je me souviens bien, on peut dépasser les 255 Presentations / Layouts par la Génération d Atlas automatique de MAP (ou CIVIL) !? Bye, lecrabe Citer Autodesk Expert Elite Team
didier Posté(e) mercredi à 15:35 Posté(e) mercredi à 15:35 Bonjour @lecrabe Je ne sais pas, mais je te fais confiance. Toutefois, faire autant de présentations me semble contreproductif. D'où mes exclamations ! Amicalement Citer Éternel débutant… Mon site perso : Programmer dans AutoCAD
(gile) Posté(e) mercredi à 21:03 Posté(e) mercredi à 21:03 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 Citer Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Vincent P. Posté(e) jeudi à 13:52 Posté(e) jeudi à 13:52 Bonjour Je ressort mon inénarrable Jeu de Feuille qui permet d'avoir dans une palette tes présentations, de plusieurs fichier DWG dans un seul JDF, de les nommer, classer, tracer, etransmiter selon ton envie ... Jovialement Vincent P. Citer Lispeur éternel débutant! Autocad Map3D 2023 Covadis-Autopist 18.2
Messages recommandés