乐筑天下

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

请论坛高手帮我解决一个关于填充的问题,谢谢

[复制链接]

4

主题

7

帖子

1

银币

初来乍到

Rank: 1

铜币
23
发表于 2011-5-5 09:57:00 | 显示全部楼层 |阅读模式
using (Transaction trans = db.TransactionManager.StartTransaction())
                {
                    Line Bottomline, wall1, wall2; //定义三条直线构成路面和两面墙壁
                    Arc top; //定义半圆顶拱
                    Bottomline = new Line(point1, point2);
                    wall1 = new Line(new Point3d(0, 0, 0), point3);
                    wall2 = new Line(new Point3d( width,0, 0), point4);
                    top = new Arc(center,radius,0,-3.1415);
                    BlockTable bt = (BlockTable)trans.GetObject(db.BlockTableId,OpenMode.ForRead);
                    BlockTableRecord btr = (BlockTableRecord)trans.GetObject(db.CurrentSpaceId,OpenMode.ForWrite);
                    btr.AppendEntity(Bottomline);
                    btr.AppendEntity(wall1);
                    btr.AppendEntity(wall2);
                    btr.AppendEntity(top);
                    //以上完成大体的轮廓
                    //主体轮廓向外偏移,构成锚网
                    //墙的顶点向外偏移100
                    Point3d point13=new Point3d(-100,wallHeight,0);
                    Point3d point14 = new Point3d(width + 100, wallHeight, 0);
                    double radius2 = radius + 100;
                    Line line1 = new Line(point1,point13);
                    Line line2 = new Line(point2,point14);
                    Arc newarc = new Arc(center, radius2, 0, -3.1415);
                    ObjectId id4= btr.AppendEntity(line1);
                    ObjectId id5 = btr.AppendEntity(line2);
                    ObjectId id6 = btr.AppendEntity(newarc);
                    //画锚喷
                    //先取样点
                    double thickness = 100;//锚喷厚度
                    Point3dCollection points = new Point3dCollection();
                    points.Add(new Point3d(point1.X-thickness,0,0));
                    points.Add(new Point3d(point13.X-thickness-150,wallHeight,0));
                    points.Add(new Point3d(center.X-radius2-400,center.Y+150+thickness,0));
                    points.Add(new Point3d(center.X, center.Y + radius2 + thickness+200, 0));
                    points.Add(new Point3d(center.X+radius2+250,center.Y+thickness+50,0));
                    points.Add(new Point3d(point14.X+thickness+150,wallHeight,0));
                    points.Add(new Point3d(point2.X + thickness, 0, 0));
                    ObjectId id3=huamaopen.draw(points);
                    //将底部直线与样条曲线闭合
                    Line l1 = new Line(new Point3d(point1.X, 0, 0), new Point3d(point1.X - thickness, 0, 0));
                    Line l2 = new Line(new Point3d(point2.X, 0, 0), new Point3d(point2.X + thickness, 0, 0));
                    ObjectId id1= btr.AppendEntity(l1);
                    ObjectId id2 = btr.AppendEntity(l2);
                    //增加填充
                    Hatch hatch = new Hatch();
                    hatch.Normal = new Vector3d(0, 0, 1);
                    hatch.Elevation = 0.0;
                    hatch.SetHatchPattern(HatchPatternType.PreDefined,"AR-CONC");
                    ObjectIdCollection objectids = new ObjectIdCollection();
                    objectids.Add(id1);
                    objectids.Add(id2);
                    objectids.Add(id3);
                    objectids.Add(id4);
                    objectids.Add(id5);
                    objectids.Add(id6);
                    //在下面这句出现eInvalidInput错误,高手能不能帮我看看?
                    hatch.AppendLoop(Autodesk..DatabaseServices.HatchLoopTypes.External,objectids);
                    hatch.EvaluateHatch(true);
                    btr.AppendEntity(hatch);
                    trans.Commit();
                    trans.Dispose();
                }
回复

使用道具 举报

22

主题

99

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
187
发表于 2011-5-6 10:55:00 | 显示全部楼层
你用的CAD是哪个版本的?
07版本的只能填充圆,08版本的都可以。
回复

使用道具 举报

4

主题

7

帖子

1

银币

初来乍到

Rank: 1

铜币
23
发表于 2011-5-6 17:38:00 | 显示全部楼层
我用的是09版,也不知道哪里错了,能不能帮我看看,谢谢了
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-6-29 12:46 , Processed in 0.838551 second(s), 59 queries .

© 2020-2025 乐筑天下

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