明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5610|回复: 12

[界面] CAD可停靠面板PaletteSet问题

[复制链接]
发表于 2018-3-5 21:20 | 显示全部楼层 |阅读模式
本帖最后由 xgr 于 2018-3-5 21:23 编辑

本意是想利用PaletteSet做一个可以自动隐藏的浮动工具条。
如何使PaletteSet加载后处于浮动状态,并且显示设置的最小尺寸。
  1. [CommandMethod("xxx1")]
  2.         public static void Xxx1()
  3.         {
  4.             _ps1 = new PaletteSet("1");
  5.             var s = new Size(800, 100);
  6.             _ps1.Size = s;
  7.             _ps1.MinimumSize = new Size(800, 100);
  8.             UserControl x1 = new Pldhhzdw();
  9.             _ps1.Add("2", x1);
  10.             _ps1.Dock = DockSides.None;
  11.             _ps1.TitleBarLocation = PaletteSetTitleBarLocation.Left;
  12.             _ps1.Visible = true;
  13.             
  14.         }

可是加载后总是会自动停靠,请问怎么解决。谢谢!

要求显示效果如图



就如CAD的图层面板那样,打开就是处于浮动状态

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2018-3-8 21:24 | 显示全部楼层
我也用vb.net做了一个类似的,用的也是PaletteSet,先设计了一个用户自定义控件后,编程加入到autocad。与楼上的差不多,后图纸存盘。图面上有很多块参考,我用如下程序遍历模型空间内的所有快参考,请问在哪些情况下遍历不到块参考?

    Public Function GetBlockNames() As String()
        Dim list As ArrayList = New ArrayList
        Dim db As Database = Autodesk.AutoCAD.DatabaseServices.HostApplicationServices.WorkingDatabase
        Dim tm As Autodesk.AutoCAD.DatabaseServices.TransactionManager = db.TransactionManager

        Dim docLock As DocumentLock = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.LockDocument()
        Dim ta As Transaction = tm.StartTransaction()
        Try
            Dim bt As BlockTable = ta.GetObject(db.BlockTableId, OpenMode.ForRead)
            Dim btr As BlockTableRecord = ta.GetObject(bt(BlockTableRecord.ModelSpace), OpenMode.ForRead)

            For Each id As ObjectId In btr
                Dim obj As DBObject = ta.GetObject(id, OpenMode.ForRead)
                If TypeOf obj Is BlockReference Then
                    Dim br As BlockReference = CType(obj, BlockReference)
                    list.Add(br.Name)
                End If
            Next
            ta.Commit()
            Dim arr As String()

            If list.Count = 0 Then
                Return Nothing
            End If
            ReDim arr(list.Count - 1)
            For i As Integer = 0 To list.Count - 1 Step 1
                arr(i) = CType(list(i), String)
            Next
            Return arr
        Catch
            ta.Abort()
            Return Nothing
        Finally
            docLock.Dispose()
            ta.Dispose()
        End Try
    End Function
 楼主| 发表于 2019-2-27 09:50 | 显示全部楼层
无意中弄好了,感谢各个网友的回复
  1. _ps.Visible = true;
  2. _ps.DockEnabled = DockSides.None;//不容许停靠
  3. _ps.Dock = DockSides.None;
复制代码
这样就不会自动停靠。
留存一下。
 楼主| 发表于 2018-3-6 16:53 | 显示全部楼层
sieben 发表于 2018-3-6 08:27
貌似这个面板总是停靠的,你要浮动的话可能需要用普通对话框了;
有个DockEnabled属性,设置为None试试看

谢谢回复,这个试过,没有作用
发表于 2018-3-6 08:27 | 显示全部楼层
本帖最后由 sieben 于 2018-3-6 08:35 编辑

貌似这个面板总是停靠的,你要浮动的话可能需要用普通对话框了;
有个DockEnabled属性,设置为None试试看
发表于 2018-3-7 08:21 | 显示全部楼层
AutoCAD的图层对话框应该不是面板,是普通的对话框
 楼主| 发表于 2018-3-7 20:47 | 显示全部楼层
自己做了一个

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2018-3-9 08:33 | 显示全部楼层
嵌套块参考能遍历到吗?也即块参考里面的块参考?
发表于 2018-3-24 16:08 | 显示全部楼层
学习学习学习了
发表于 2018-4-1 21:59 | 显示全部楼层
PaletteSet在vs2010+cad2014下面,说没有引用,这是怎么回事?请教
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-25 14:09 , Processed in 0.388176 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表