chengw 发表于 2011-10-11 15:53:43

CAD画椭圆


Point3d center=new Point3d(-9.39346286010186, 2.86410249509299, 0.0);
vector3d majVec= new Vector3d(1.23087105577724, -1.73142607162663, 0);
Ellipse ell = new Ellipse(center,majVec, Vector3d.ZAxis, 3.20067262646138, 0.0, 6.28318530717959);
          Database db = HostApplicationServices.WorkingDatabase;
            ObjectId objId = new ObjectId();
            using (Transaction tran = db.TransactionManager.StartTransaction())
            {
                BlockTable bt = tran.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;
                BlockTableRecord btr = tran.GetObject(db.CurrentSpaceId, OpenMode.ForWrite) as BlockTableRecord;
               objId= btr.AppendEntity(ell );
                tran.AddNewlyCreatedDBObject(ell , true);
                tran.Commit();
            }
代码如上,为什么运行后椭圆并没有显示处理呢??为什么?

sieben 发表于 2011-10-11 17:30:35

Ellipse ell = new Ellipse(center,majVec, Vector3d.ZAxis, 3.20067262646138, 0.0, 6.28318530717959);
改为下面样子试试,
Ellipse ell = new Ellipse(center,Vector3d.ZAxis,majVec,3.20067262646138, 0.0, 6.28318530717959);

另外检查一下是没有东西出来会是东西出来了看不见而已.

chengw 发表于 2011-10-12 10:11:53

sieben 发表于 2011-10-11 17:30 static/image/common/back.gif
Ellipse ell = new Ellipse(center,majVec, Vector3d.ZAxis, 3.20067262646138, 0.0, 6.28318530717959);
...

谢谢!我把代码像你说的那样,试了下,还是没显示(我运行完代码后,zoom了下,还是没出来),别的地方我检查了下,应该没什么错的,,这个问题已经让我纠结很久了,帮帮忙啊!!

sieben 发表于 2011-10-12 10:47:38

本帖最后由 sieben 于 2011-10-12 10:48 编辑

1,你没有给出全部代码,看上去你给出的这部分代码是没有问题的(但或许前后有问题,甚至这些代码根本没有执行);
2,你的代码里面是将实体添加到.CurrentSpaceId,也就是说可能是添加到模型空间,也可能是添加到图纸空间
3,使用Earse 命令 All来判断是否添加了新实体(zoom不保险,另外建议在新图纸);
4,在你的函数里捕捉异常,在前后添加一些提示看你的函数正常走完了没有.

hhhwjb 发表于 2011-10-13 20:22:03

文档没有加锁,CAD应该会崩溃吧
页: [1]
查看完整版本: CAD画椭圆