乐筑天下

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

用C#在文本周围画阴影。网

[复制链接]

1

主题

3

帖子

1

银币

初来乍到

Rank: 1

铜币
7
发表于 2015-6-26 17:23:29 | 显示全部楼层 |阅读模式
嘿,大家好,我已经找了几个星期了,可惜一直没能找到我问题的答案。我试图孵化一个区域并检测岛屿(而不是孵化它们 - 该岛将始终是MTEXT),我看到 http://www.theswamp.org/index.php?topic=38156.0#lastPost,但它总是为我抛出一个异常,就像我发现的所有其他类似的代码一样。我能够获得MTEXT和PLINE的ObjectId,但是当我尝试将循环附加到多个ID时,如下所示:foreach(Ids中的ObjectId id)//ids是ObjectIdCollection。。
{。
if (id != ObjectId.Null)。
{。
acHatch.AppendLoop(HatchLoopTypes.Outermost, new ObjectIdCollection() { id });。
}。
}。
我在循环的第二次运行时收到“无效输入”异常,这是目前有效的代码,除了它通过文本(coll只有1个ObjectId):private void AddHatch(Transaction tr,BlockTableRecord acBlkTblRec,MaxHatch hatchCommand,ObjectIdCollection coll)。
{ 。
尝试。
{。
Hatch acHatch = new Hatch();。
acHatch.SetDatabaseDefaults();。
acHatch.SetHatchPattern(HatchPatternType.PreDefined, hatchCommand.HatchCode);。
achatch.HatchStyle = HatchStyle.Outer;。
acHatch.ColorIndex = hatchCommand.HatchColor;。
acHatch.PatternAngle = hatchCommand.HatchAngle;                        。
acHatch.PatternScale = hatchCommand.HatchScale;               。

由于 AutoCAD 错误(http://forums.autodesk.com/t5/net/hatch-pattern-scale-problem/td-p/2057211),必须再次调用 SetHatchPattern,已在 http://adndevblog.typepad.com/autocad/2012/07/hatch-using-the-autocad-net-api.html 上确认。
acHatch.SetHatchPattern(HatchPatternType.PreDefined, hatchCommand.HatchCode);。

acBlkTblRec.AppendEntity(acHatch);。
断续器AddNewlyCreatedDBObject(acHatch, true);。

acHatch.Associative = true;。


acHatch.AppendLoop(HatchLoopTypes.Outermost, coll);。

acHatch.EvaluateHatch(true);。
}。
catch (System.Exception ex)。
{。
HandleError(“AddHatch”, ex.消息,假);。
}。
}。
有什么想法吗?。

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

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

使用道具 举报

24

主题

204

帖子

6

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
300
发表于 2015-6-29 13:11:45 | 显示全部楼层
无需尝试运行您的代码,我可以告诉您我是如何做到的。 我在要填充的区域周围有一个折线(折线),里面有一个DBText(文本)实体,所以我首先从折线创建一个区域(reg)。var tempcol = new DBObjectCollection { polyline };。
var regions = Region.CreateFromCurves(tempcol);。
var reg = (Region)regions[0];。
注册,SetDatabaseDefaults();。
modelSpace.AppendEntity(reg);。
断续器AddNewlyCreatedDBObject(reg, true);然后我创建了Hatch(帽子)。var hat = new Hatch();。
帽子,SetDatabaseDefaults();。
帽子,SethatchPattern(HatchPatternType.PreDefined, “ANSI31”);。
帽子,关联 = 假;。
帽子,AppendLoop(HatchLoopTypes.External, new ObjectIdCollection(new[] { reg.ObjectId })); 将图案填充放在折线内。
帽子,AppendLoop(HatchLoopTypes.Default, new ObjectIdCollection(new[] { text.ObjectId }));  让哈奇知道里面有岛屿。
modelSapce.AppendEntity(hat);。
断续器AddNewlyCreatedDBObject(hat, true);。
回复

使用道具 举报

1

主题

3

帖子

1

银币

初来乍到

Rank: 1

铜币
7
发表于 2015-7-13 12:42:29 | 显示全部楼层
谢谢建议,MexicanCustard!不幸的是,我在这一行得到了同样的“eInvalidInput”异常:



hat。AppendLoop(HatchLoopTypes。外部的新ObjectIdCollection(new[] { reg。ObjectId })));//将影线放在折线内
知道是什么原因造成的吗?
回复

使用道具 举报

116

主题

996

帖子

9

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1466
发表于 2015-7-13 18:29:28 | 显示全部楼层
deckeresq,
哪个AutoCAD版本
关于,
回复

使用道具 举报

1

主题

3

帖子

1

银币

初来乍到

Rank: 1

铜币
7
发表于 2015-7-14 11:01:49 | 显示全部楼层
Kerry,
我正在使用AutoCAD 2014和Interop。中的AutoCAD 1.0.0.0参考。Net 4.0。
这里有个图:
http://imgur.com/OL0hnWJ
很遗憾,由于工作场所的限制,我不能贴解决方案的ZIP(这是工作用的)。不过,我很乐意提供任何需要的背景资料!
感谢您对此进行调查!这几周我一直很难受。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-2-5 00:40 , Processed in 0.148188 second(s), 62 queries .

© 2020-2025 乐筑天下

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