Back

Autodesk AutoCAD .Net 创建PatternSet和工具栏

Language 中文 English

.Net创建的停靠栏再2016/2022中测试无法放在菜单栏的下部只能在最上层的位置固定,手动调换的时候也无法完成这个操作。

PatternSet

PatternSet 是AutoCAD的一个接口,通过接口可以设置工具栏的样式和将自己的窗口植入到工具栏中,其中需要的WPF窗口类型为‘UserControl’,作为子类别加入到CAD的工具栏中,所以两者可以单独创建最终使用借口连接到一起即可。

 public class PatternSetWindowCommand
 {
     [CanBeNull] private static PaletteSet PSet { get; set; } = null;

     [CommandMethod("ShowWindow")]
     public void ShowWindowCommand()
     {
         if (PSet == null || PSet.Visible == false)
         {
             var window = new PatternSetWindow();

             PSet = new PaletteSet("Document");
             PSet.Visible = true;
             ElementHost host = new()
             {
                 AutoSize = true,
                 Dock = DockStyle.Top,
                 Child = window
             };
             
             PSet.Style =  PaletteSetStyles.ShowCloseButton | PaletteSetStyles.ShowAutoHideButton | PaletteSetStyles.SingleRowDock |
                            PaletteSetStyles.ShowPropertiesMenu |  PaletteSetStyles.SingleColDock ;
             PSet.Add("TYDI_Document", host);
             PSet.KeepFocus = true;
             PSet.Size = new Size(600, 50);
             PSet.MinimumSize = new Size(300, 50);
             PSet.Dock = DockSides.Top;
             PSet.RecalculateDockSiteLayout();
         }
     }

 }

最终的效果: 在这里插入图片描述 在这里插入图片描述

ToolBar

工具栏与CUI的方式基本一致,只需要将自己的命令字符串传入并且bmp格式图传入即可

var acadApp = (AcadApplication)Autodesk.AutoCAD.ApplicationServices.Application.AcadApplication;


var atb = acadApp.MenuGroups.Item("ACAD").Toolbars.Add("TYDI");


var bitmapPath = @"E:\CSharpProgram\TYDIDocumentPlatform\DocumentPlatform\Resources\cCCC.bmp";
var bitmapLargePath = @"E:\CSharpProgram\TYDIDocumentPlatform\DocumentPlatform\Resources\A.bmp";

var atbItem = atb.AddToolbarButton(0, "Test06", "CCC", "LI", false);
//atbItem.SetBitmaps(bitmapPath, bitmapPath);
var atbItem2 = atb.AddToolbarButton(2, "Test02", "BBBB", "CIRLE", false);

//atbItem2.SetBitmaps(bitmapLargePath, bitmapLargePath);
//atb.AddSeparator("3");

atb.Dock(Autodesk.AutoCAD.Interop.Common.AcToolbarDockStatus.acToolbarDockTop);

atb.Visible = true;

最终的效果: 在这里插入图片描述