明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1037|回复: 3

hatch出现异常

[复制链接]
发表于 2015-6-5 09:09:07 | 显示全部楼层 |阅读模式
本帖最后由 LDJ 于 2015-6-5 09:57 编辑

   // 由图案填充类型、填充图案名称、
        // 填充角度和填充比例创建图案填充的函数.
        // partType:0为预定义图案;1为用户定义图案;2为自定义图案.
        private ObjectId AddHatch(out Hatch hatchEnt, HatchPatternType patType,
            String patName, Double patternAngle, Double patternScale)
        {
            //ObjectId entId = Autodesk.AutoCAD.DatabaseServices.ObjectId.Null;
           
                Hatch ent = new Hatch();
                ent.HatchObjectType = HatchObjectType.HatchObject;
                Database db = HostApplicationServices.WorkingDatabase;
                using (Transaction trans = db.TransactionManager.StartTransaction())
                {
                    BlockTable bt = (BlockTable)trans.GetObject
                        (db.BlockTableId, OpenMode.ForRead);
                    BlockTableRecord btr = (BlockTableRecord)trans.GetObject
                        (bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite);
                    ObjectId entId = btr.AppendEntity(ent);
                    try
                    {
                        trans.AddNewlyCreatedDBObject(ent, true);
                        ent.SetDatabaseDefaults();
                        ent.PatternAngle = patternAngle;//出现异常
                        ent.PatternScale = patternScale;
                        ent.SetHatchPattern(patType, patName);
                        hatchEnt = ent;
                        return entId;
                    }
                    catch (System.Exception e)
                    {
                        MessageBox.Show(e.Message);
                        hatchEnt = ent;
                        return entId;
                    }
            
                    trans.Commit();
                    
                }
            
           
            
         }
        [CommandMethod("testdiff", CommandFlags.UsePickSet | CommandFlags.Modal | CommandFlags.Redraw)]
        public void testdiff()
        {
              Editor ed = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;
         
            PromptSelectionResult res = ed.SelectImplied();
            if (PromptStatus.OK == res.Status)
            {
                // Convert the SelectionSet to MgSelectionBase using AcMapFeatureEntityService.
                Debug.Assert(res.Value != null);
                if (res.Value.Count != 1) return;
                ObjectId entityID = res.Value[0].ObjectId;
                //ObjectId entityID2 = res.Value[1].ObjectId;
                 ObjectIdCollection loops1 = new ObjectIdCollection();
               loops1.Add(entityID);
               //loops1.Add(entityID2);
                ObjectIdCollection[] loops = new ObjectIdCollection[1];
               loops.SetValue(loops1, 0);
                Hatch hatchEnt;
                ObjectId hatEntId = AddHatch(out hatchEnt, 0, "ANGLE", Math.PI / 3, 10);
             Database db = HostApplicationServices.WorkingDatabase;
             // 关联填充图案与边界.
             using (Transaction tr = db.TransactionManager.StartTransaction())
             {
                 hatchEnt = (Hatch)tr.GetObject(hatEntId, OpenMode.ForWrite);
                 hatchEnt.Associative = true;
                 for (int i = 0; i < loops.Length; i++)
                 {
                     hatchEnt.AppendLoop(HatchLoopTypes.Default, loops);
                 }
                 tr.Commit();
            }         
            }
            
        }

选择一个封闭的pline后 运行代码,出现异常,提示eInvalidInput

高手帮助看下
发表于 2015-6-5 09:21:55 | 显示全部楼层
不用HatchLoopTypes.Default,应该明确为OutLoop吧
 楼主| 发表于 2015-6-5 09:58:26 | 显示全部楼层
  ent.PatternAngle = patternAngle;//出现异常
                        ent.PatternScale = patternScale;
发表于 2015-6-6 19:54:20 | 显示全部楼层
没有边的 Hatch 不能添加到 BlockTableRecord
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 11:31 , Processed in 0.149928 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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