明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1329|回复: 2

[图元] 为什么生成的填充没有面积属性?

[复制链接]
发表于 2023-1-31 20:56:29 | 显示全部楼层 |阅读模式
各位老师好,为什么我用以下代码生成的填充,填充却没有面积属性?

public class TEST02
    {
        [CommandMethod("CGE")]
        [Obsolete]
        public void ChangeHatch()
        {
            Document doc = Application.DocumentManager.MdiActiveDocument;

            ObjectIdCollection ids = new ObjectIdCollection();
            using (DocumentLock @lock = doc.LockDocument())
            {
                using (Transaction trans = doc.TransactionManager.StartTransaction())
                {
                    BlockTable blk = trans.GetObject(doc.Database.BlockTableId, OpenMode.ForWrite) as BlockTable;
                    BlockTableRecord space = trans.GetObject(blk[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord;
                    Circle circle = new Circle();
                    circle.Radius = 5000;
                    circle.Center = new Point3d(0, 0, 0);
                    space.AppendEntity(circle);
                    trans.AddNewlyCreatedDBObject(circle, true);
                    trans.Commit();
                    ids.Add(circle.Id);

                }
            }

            if (ids.Count > 0)
            {
                using (DocumentLock @lock = doc.LockDocument())
                {
                    using (Transaction trans = doc.TransactionManager.StartTransaction())
                    {
                        BlockTable blk = trans.GetObject(doc.Database.BlockTableId, OpenMode.ForWrite) as BlockTable;
                        BlockTableRecord space = trans.GetObject(blk[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord;

                        // 生成新填充图案--------------
                        Hatch hatch = new Hatch();
                        hatch.HatchObjectType = HatchObjectType.HatchObject;
                        // hatch.HatchStyle = HatchStyle.Outer;
                        hatch.PatternAngle = 0;
                        hatch.PatternScale = 200;
                        hatch.Layer = "0";
                        hatch.SetHatchPattern(HatchPatternType.PreDefined, "ANGLE");
                        hatch.ColorIndex = 2;
                        // hatch.Associative = true;
                        space.AppendEntity(hatch);
                        trans.AddNewlyCreatedDBObject(hatch, true);

                        hatch.AppendLoop(HatchLoopTypes.Outermost, ids);////图案添加边界环
                        hatch.EvaluateHatch(true);

                        trans.Commit();
                    }
                }
            }

        }

    }

本帖子中包含更多资源

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

x
发表于 2023-2-1 14:43:44 | 显示全部楼层
首先排除cad版本问题,其次用惊惊博客或者ifox工程的生成填充方式(推荐),例如你可能遗留了hatch.SetDatabseDefault().
注明:
一次开发的填充算法:扫描线算法,而Acad的填充是一种含有隐匿操作的算法,这个世界除了桌子没有人知道它怎么干的,你可以查阅一下桌子和中望的官司里面有个三叶草《美国Autodesk公司起诉中望CAD侵权》
发表于 2023-2-1 20:47:54 | 显示全部楼层
顺序应该按如下:
                        space.AppendEntity(hatch);
                        trans.AddNewlyCreatedDBObject(hatch, true);
                        hatch.Associative = true;
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 04:49 , Processed in 0.139750 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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