- // option 2: add each boundary object as a separate loop
- // ( as in the second code sample in http://www.theswamp.org/index.php?topic=20832.msg253807#msg253807 )
- // Problem: the hatch is created in the wrong place
-
- using ( var boundaryColl = new ObjectIdCollection() ) {
- foreach ( var oid in associatedObjectIds ) {
- boundaryColl.Clear();
- boundaryColl.Add( oid );
- h.AppendLoop( ltype, boundaryColl );
- }
- }
这种方法的问题在于,图案填充是在给定对象的错误交点处创建的
随附的是一张图纸和代码,可轻松重现问题。下面是操作方法:
*在提供的源代码中注释出选项1或选项2(您可以通过搜索例如“选项1”轻松找到它们),具体取决于您希望再现的给定问题
*编译给定的源代码并将其加载到AutoCAD,以使其中定义的命令可用
*。打开所附的图形(hatch_with_CIRCAL_boundary.dwg)
*选择矩形内不与任何其他对象相交的图案填充,然后运行命令NSASSOCHATCH(调用提供的代码)。这在选项1和选项2代码中都可以正常工作。
因为只有一个边界对象。
*现在,选择圆和矩形的交点处的图案填充。
*在选项1中使用代码会导致从AppendLoop中抛出eInvalidInput。
*在选项2中使用代码会在圆和正方形的错误交点处创建新图案填充。
任何关于如何使用C#成功重建具有多个边界对象的关联图案填充的想法都将受到高度赞赏
我的环境:Windows 7上的AutoCAD 2015 64位
本帖以下内容被隐藏保护;需要你回复后,才能看到!
游客,如果您要查看本帖隐藏内容请
回复