明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1930|回复: 3

[选集] 怎么让属性显示在文本框中

[复制链接]
发表于 2011-7-5 12:21:26 | 显示全部楼层 |阅读模式
我创建了一个块,这里代码就不写了,然后我想用下面这个方法实现点击块,然后该块的属性名和属性值都出现在windows窗体的文本框中,可是块得属性我获取出来了,但不知道怎么让它显示在文本框中,在代码中应该怎么写啊,请指点
  [CommandMethod("sel")]
        public static void BrowseBlock()
        {
            Editor ed = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;
           Database db = HostApplicationServices.WorkingDatabase;
           TypedValue[] filterValues = { new TypedValue((int)DxfCode.Start, "INSERT")};
           SelectionFilter filter = new SelectionFilter(filterValues);
           PromptSelectionOptions opts = new PromptSelectionOptions();
           opts.MessageForAdding = "请选择图形中的块对象";
           PromptSelectionResult res = ed.GetSelection(opts, filter);
           if (res.Status != PromptStatus.OK)
           {
               return;
           }
           SelectionSet ss = res.Value;
           ObjectId[] ids = ss.GetObjectIds();
           Transaction trans = db.TransactionManager.StartTransaction();
           foreach (ObjectId blockid in ids)
           {
               BlockReference blockref = (BlockReference)trans.GetObject(blockid, OpenMode.ForRead);
               BlockTableRecord btr = (BlockTableRecord)trans.GetObject(blockref.BlockTableRecord, OpenMode.ForRead);
              btr.Name   //属性名
               btr.Dispose();
               AttributeCollection atts = blockref.AttributeCollection;
               foreach (ObjectId attid in atts)
               {
                   AttributeReference attref = (AttributeReference)trans.GetObject(attid, OpenMode.ForRead);
                   attref.TextString       //属性值
               }
               
           }
        }
发表于 2011-7-16 15:53:27 | 显示全部楼层
把方法
public static void BrowseBlock()
改成带参数的方法
public static void BrowseBlock(TextBox txtName,TextBox txtValue)

其中txtName为属性名文本框,txtValue为属性值文本框

然后进行赋值:
txtName.Text=btr.Name   //属性名
txtValue.Text=attref.TextString       //属性值
发表于 2011-9-23 15:42:52 | 显示全部楼层
lzx838 发表于 2011-7-16 15:53
把方法
public static void BrowseBlock()
改成带参数的方法

我也遇到类似问题,用命令,无法向palette的textbox传递属性啊,如果上面改成带参数的,那么命令无法调用啊
发表于 2011-9-23 20:15:54 | 显示全部楼层
本帖最后由 李辉 于 2011-9-23 20:18 编辑

下午我的问题,跟你一样的,搞定啦!!解决方法是这样的:通过命令的方式向文本框赋予text属性,这个文本框必须是public shared的属性,共享的变量,然后才能在通过命令外部调用
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 20:52 , Processed in 0.247906 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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