civil3D 资料

      1. Civil 3D软件遇到莫名问题时,如捕捉模式无效,可尝试修改选项当中的”配置”.
      2. 同时,为加快加载速度,可在MyARX.cs的文件头加入以下语句:
        [assembly: ExtensionApplication (typeof (ARXExample.MyARX) ) ]
        [assembly: CommandClass (typeof (ARXExample.MyARX) ) ]                    
        这样在加载程序时AutoCAD将直接通过MyARX中的Initialize语句进行初始化,同时注册MyARX中的命令。否则,AutoCAD将搜索dll中所有的类以找到实现IExtensionApplication接口的类进行初始化,如找不到则不进行初始化。同样,通过CommandClass属性,AutoCAD也会直接到MyARX类中搜索要注册的命令。当程序中包含的类数目较多时,通过ExtensionApplication和CommandClass这两个属性可显著地加快程序的加载速度。 
      3. 学习资料:   http://blog.csdn.net/zhujiang1001/article/details/1823709
      4. Acad.ErrorStatue问题.受动在托管C++中将返回类型改为Int
      5. Visual Studio 2010开发AutoCAD 2012 .net 应用程序调试时断点不起作用: 在AutoCAD中你通过系统环境变量FIBERWORLD来查看当前纤程是否打开,如果是1,则你可以通过把系统环境变量NEXTFIBERWORLD设为0,并且关闭所有文档。这时新建文档时就是纤程关闭状态了,你还可以通过FIBERWORLD变量来查看确认。http://www.cnblogs.com/junqilian/archive/2011/03/18/1988327.html
      6. New  deletedelete [] SectionalName ;之前, SectionalName必须是已经new出来的.在Init的时候默认new    SectionalName=new ACHAR[1];
      7. Adesk::IntDbId.ObjectId 需要定义为Long型的.在C++中long long 对应C#中的long
      8. 非调试模式下添加隧道CAD崩溃:纠结了N天啊…
        1.  AcdbAcDbVoidPtrArray regions1
        2. regions1.setPhysicalLength(1);(需要设置长度,否则析构的时候Delete会出错)
        3.  AcDbRegion::createFromCurves(arcs1,regions1);  
      9. Object ARx SDK 中的arxdev.chm文件有一篇文章,Setting up an ObjectARX Project Using Microsoft Visual Studio,有关环境配置
      10. C++项目版本和CAD不匹配,解决方法,使用V90和Target 3.5编译的版本.VS2010修改C++项目Target为3.5方法:直接编辑项目文件,修改为3.5.,没的话加上
      11. 第一次启动时拒绝接收呼叫错误: http://www.cnblogs.com/junqilian/archive/2011/08/21/2148630.html
      12. gyssoft的专栏阳光和小鸟 有关二次开发的博客
      13. CAD二次开发中如何控制AutoCAD 环境 图形界面的一些控制API
      14. 在.NET中进行AutoCAD二次开发
      15. CAD问题搜索网址
      16. civil3D中绘制弧形弧线时,默认是按照逆时针的方向绘制的,即弧形的法向量是(0,0,1).法向量控制的是弧形的起点和终点,修改法向量为(0,0,-1)可修改其起点和终点.
      17. civil3D中绘制Table(Autodesk.AutoCAD.DatabaseServices.Table)
      18. 在Table中显示自定义的图形时,单元格接收的参数是一个块表记录,所以,需要先把要加入的图形放到一个单独的块表记录中,然后将块表记录加入到表格中.

 

        
//创建图形
var colorRectnagle = new Polyline(4);
colorRectnagle.AddVertexAt(0, new Point2d(1.5, 1.5), 0, 0.001, 0.001);
colorRectnagle.AddVertexAt(0, new Point2d(1.5, -1.5), 0, 0.001, 0.001);
colorRectnagle.AddVertexAt(0, new Point2d(-1.5, -1.5), 0, 0.001, 0.001);
colorRectnagle.AddVertexAt(0, new Point2d(-1.5, 1.5), 0, 0.001, 0.001);
colorRectnagle.Closed = true;
colorRectnagle.Layer = SystemInformation.SurfaceAnalysisNaturalLayer;
//创建图形的填充色
            Hatch hatch = new Hatch();
            hatch.Layer = SystemInformation.SurfaceAnalysisNaturalLayer;
            hatch.SetDatabaseDefaults();
            hatch.SetHatchPattern(HatchPatternType.PreDefined, "Solid");
//创建块表记录
                var btrName = SystemInformation.SurfaceAnalysisNaturalLayer + i;
                if (bt.Has(btrName)) {
                    var old = trans.GetObject(bt[btrName], OpenMode.ForWrite);
                    old.Erase();
                }
                var newBlockTable = new BlockTableRecord();
                newBlockTable.Name = btrName;
                var newBlockID = bt.Add(newBlockTable);
                trans.AddNewlyCreatedDBObject(newBlockTable, true);
//填充并添加到单元格
                var newRectangle = colorRectnagle.Clone() as Polyline;
                var colorRectnagleID = AutoCadDbHelper.AppendEntity(newRectangle, newBlockTable, trans);

                var newHatch = hatch.Clone() as Hatch;
                newHatch.Color = color;
                AutoCadDbHelper.AppendEntity(newHatch, newBlockTable, trans);

                ObjectIdCollection objIDColl = new ObjectIdCollection();
                objIDColl.Add(colorRectnagleID);
                newHatch.AppendLoop(HatchLoopTypes.Default, objIDColl);

                table.SetBlockTableRecordId(rowIndex, 1, newBlockID, true);
View Code

 

 

posted @ 2013-10-17 11:11  平常心队长  阅读(556)  评论(0)    收藏  举报