• Civil 3d 由道路创建要素线


    集合嵌套的层级比较多,

    不熟悉API的话很难找到创建要素线的方法,
    测试代码贴到这里,

    方便有需要写类似代码的配有借鉴。

    如何创建无场地内的要素线需要进一步研究。

    除了创建要素线外,

    还可以创建路线、纵断面,

    有兴趣的朋友们可以自己研究一下。

    以下代码在civil 3d 2022下测试。

    public void C_cflTest()
    {
        Document acDoc = Application.DocumentManager.MdiActiveDocument;
        Database acCurDb = acDoc.Database;
        Editor ed = acDoc.Editor;
        PromptEntityResult per = ed.GetEntity("\n拾取道路");
        if (per.Status != PromptStatus.OK) return;
        using (Transaction tr = acDoc.TransactionManager.StartTransaction())
        {
            var cor = per.ObjectId.GetObject(OpenMode.ForRead) as Corridor;
            foreach (Baseline bl in cor.Baselines)
            {
                var flcms = bl.MainBaselineFeatureLines.FeatureLineCollectionMap;
    
                foreach (FeatureLineCollection fls in flcms)
                {
                    foreach (CorridorFeatureLine cfl in fls)
                    {
                        // 由特定代码的要素线创建“自动道路要素线”
                        if (cfl.CodeName.Contains("Ditch_Bottom"))
                        {
                            try
                            {
                                // 要提前创建一个场地,不然这里会出错,
                                // 怎么输入“无”场地尚未找到解决方法
                                cfl.ExportAsGradingFeatureLine(civilDoc.GetSiteIds()[0], true);
                            }
                            catch (System.Exception ex)
                            {
                                ed.WriteMessage(ex.Message);
                            }
    
                        }
                    }
                }
            }
            tr.Commit();
        }
    }
  • 相关阅读:
    SqlServer卡慢解决办法
    His表(简化)
    解决Oracle数据库空间不足问题
    获取select下拉框选中的的值
    使用编辑器Sublime
    Angularjs中的$filter
    Angularjs 的Controlleras 和$scope
    在html页面中实现代码的高亮显示
    Angularjs的ui-router
    TML5之Canvas
  • 原文地址:https://www.cnblogs.com/myzw/p/16045669.html
Copyright © 2020-2023  润新知