乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 60|回复: 3

选择集woe

[复制链接]

21

主题

58

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
142
发表于 2019-5-20 11:00:21 | 显示全部楼层 |阅读模式
我使用以下函数为我提供特定层上的块引用选择集。 AutoCADDrawingObjectName.BlockReference 返回文本“INSERT”。
但是,当我知道我要求的层有块引用时,它返回了selectSetResult.Status值的错误警告(我无法拾取任何代码),并为该值返回Null。
  1.         public static SelectionSet GetBlockRefOnLayerSelectionSet(string LayerName)
  2.         {
  3.             Document thisDrawing;
  4.             SelectionSet selectionSet = null;
  5.             PromptSelectionResult selectionSetResult;
  6.             TypedValue[] typedArray = new TypedValue[2];
  7.             SelectionFilter selectionFilter;
  8.             try
  9.             {
  10.                 thisDrawing = GetDocument();
  11.                 Editor editor = thisDrawing.Editor;
  12.                 typedArray.SetValue(new TypedValue((int)DxfCode.Start, AutoCADDrawingObjectName.BlockReference), 0);           
  13.                 typedArray.SetValue(new TypedValue((int)DxfCode.LayerName, LayerName), 1);  
  14.                 selectionFilter = new SelectionFilter(typedArray);
  15.                 selectionSetResult = editor.SelectAll(selectionFilter);
  16.                 if (selectionSetResult.Value != null)
  17.                 {
  18.                     selectionSet = selectionSetResult.Value;
  19.                 }
  20.             }
  21.             catch (Exception ex)
  22.             {
  23.                 MessageBox.Show("AutoCADUtility.GetBlockRefOnLayerSelectionSet : " + ex.Message, MessageHeadings.ExceptionError);
  24.             }
  25.             return selectionSet;
  26.         }

我不禁觉得编辑器.SelectAll指令是错误的。 COM AcadSelectionSet 类允许我们使用 .选择方法,但我找不到等效方法。
有人能看到我在这里做错了什么吗?
问候, 保罗

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

15

主题

687

帖子

169

银币

中流砥柱

Rank: 25

铜币
582
发表于 2019-5-20 11:46:38 | 显示全部楼层
嗨,请不要让C#像VB(A)一样冗长/嘈杂,您可以在单个表达式中声明和初始化您的变量。你说“我知道我要求的层有Block refs,”,但代码没有...使用. NET,我们检查PromptResult.Satus.PromptStatus.OK表示对象已被选中PromptStatus.Error表示选择为空。忘记COM做什么,这里是. NET。尝试这样做:公共静态SelectionSet GetBlockRefOnLayerSelectionSet(string layerName)。
{。
编辑Application.DocumentManager.MdiActiveDocument.Editor。
TypeValue[]typeValue={new TypeValue(0,"INSERT"), new TypeValue(8, layerName)};。
提示选择结果选择结果=ed.GetSelection(新的选择过滤器(类型值));。
如果(selectionResult.Status==PromptStatus.OK)。
返回selectionResult.Value;。
其他。
返回null;。
}。
回复

使用道具 举报

21

主题

58

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
142
发表于 2019-5-21 04:12:48 | 显示全部楼层
正如我所希望的那样,这是我在其他地方的编程。我没有设置块引用的层。
回复

使用道具 举报

21

主题

58

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
142
发表于 2019-5-21 04:22:52 | 显示全部楼层
感谢您确认代码正常工作
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2024-11-22 09:32 , Processed in 0.172837 second(s), 60 queries .

© 2020-2024 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表