CAD读取填充属性,并设置到另一个新建的填充(com接口c#语言)

c#代码实现如下:

                      MxDrawEntity ent = (MxDrawEntity)axMxDrawX1.GetEntity("hatch");                    

                      if (ent == null)                        

                      return;                    

                      if (!(ent is MxDrawHatch) )

                    {                          

                    return;

                    }

 

                    MxDrawHatch hatch = (MxDrawHatch)ent;

 

                    MxDrawHatch newHatch = new MxDrawHatch();                    

                    // 读取选择到填充对象数据,把这个数据传给新建的newHathc对象。

                    newHatch.PatternAngle = hatch.PatternAngle;                    

                    // 循环得到填充边数据.

                    for (Int32 i = 0; i < hatch.NumLoops; i++)

                    {                        

                    if (!hatch.LoopTypeIsPolyline(i))

                        {                            

                        // 暂不支持曲线类型的边界.

                            continue;

                        }

 

                        Int32 iLootType = hatch.LoopTypeAt(i);

 

                        MxDrawResbuf loop = hatch.GetLoopAt(i);                        

                        if(loop == null)                            

                        continue;                        

                        // 下面可以得每个点的坐标,凸度.

                        for (Int32 j = 0; j + 1< loop.Count; )

                        {

                            MxDrawPoint pt = loop.AtPoint(j);                            

                            double dBulge = loop.AtDouble(j + 1);

                            j += 2;

                        }                        

                        // 把得到loop设置给新对象.

 

                        newHatch.AppendLoop(iLootType, loop);

                    }                    //

                    newHatch.Elevation = hatch.Elevation;                    

                    // 读取图案定义数据.

                    for (Int32 i = 0; i < hatch.NumPatternDefinitions(); i++)

                    {                        

  double Angle = 0.0, baseX = 0.0, baseY = 0.0, offsetX = 0.0, offsetY = 0.0;

  MxDrawResbuf defData = hatch.GetPatternDefinitionAt(

  i, out Angle, out baseX, out baseY, out offsetX, out offsetY);                        

                        if (defData == null)                            

                        continue;                        

                        // 下面可以得每个图案定义线型数据 。

                        for (Int32 j = 0; j + 1 < defData.Count; j++ )

                        {                            

                        double dDashe = defData.AtDouble(j);

              

                        }

 

                    newHatch.AddPatternDefinition(Angle,baseX,baseY,offsetX,offsetY,defData);

                    }                    //

                   newHatch.PatternType = hatch.PatternType;

                   newHatch.PatternName = hatch.PatternName;

                   newHatch.PatternScale = hatch.PatternScale;

                   newHatch.PatternSpace = hatch.PatternSpace;

                   newHatch.PatternDouble = hatch.PatternDouble;

                   newHatch.HatchStyle = hatch.HatchStyle;

                   newHatch.HatchObjectType = hatch.HatchObjectType;

                   newHatch.GradientType = hatch.GradientType;

                   newHatch.GradientName = hatch.GradientName;

                   newHatch.GradientAngle = hatch.GradientAngle;

                   newHatch.GradientOneColorMode = hatch.GradientOneColorMode;

                   newHatch.ShadeTintValue = hatch.ShadeTintValue;                    

                   // 把新的填充对象增加当前空间。

                   axMxDrawX1.DrawEntity(newHatch);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值