1. using Autodesk.AECC.Interop.Land;
  2. using Autodesk.AECC.Interop.UiLand;
  3. using Autodesk.AutoCAD.ApplicationServices;
  4. using Autodesk.AutoCAD.DatabaseServices;
  5. using Autodesk.AutoCAD.EditorInput;
  6. using Autodesk.AutoCAD.Geometry;
  7. using Autodesk.AutoCAD.Interop;
  8. using Autodesk.AutoCAD.Runtime;
  9. using Autodesk.Civil.ApplicationServices;
  10. using Autodesk.Civil.DatabaseServices;
  11. using Autodesk.Civil.Settings;
  12. [assembly: CommandClass(typeof(NameTemplate.NameTemplateTest))]
  13. namespace NameTemplate
  14. {
  15. class NameTemplateTest
  16. {
  17. string m_sAeccAppProgId = "AeccXUiLand.AeccApplication.11.0";
  18. protected Document doc;
  19. protected Database db;
  20. protected Editor ed;
  21. protected CivilDocument civilDoc;
  22. ObjectId alignmentId;
  23. ObjectId samplineGroupId;
  24.  
  25. private IAcadApplication m_oAcadApp = null;
  26. private IAeccApplication m_oAeccApp = null;
  27. private IAeccDocument m_oAeccDoc = null;
  28. private IAeccDatabase m_oAeccDb = null;
  29.  
  30. AeccAlignment comAlignment;
  31. AeccSampleLineGroup comSLG;
  32.  
  33. public NameTemplateTest()
  34. {
  35. doc = Application.DocumentManager.MdiActiveDocument;
  36. ed = doc.Editor;
  37. db = doc.Database;
  38. civilDoc = CivilApplication.ActiveDocument;
  39.  
  40. m_oAcadApp = (IAcadApplication)Application.AcadApplication;
  41. if (m_oAcadApp != null)
  42. {
  43. m_oAeccApp = (IAeccApplication)m_oAcadApp.GetInterfaceObject(m_sAeccAppProgId);
  44. m_oAeccDoc = (IAeccDocument)m_oAeccApp.ActiveDocument;
  45. m_oAeccDb = (IAeccDatabase)m_oAeccApp.ActiveDocument.Database;
  46. }
  47. }
  48. public void ComNameTemplateTest()
  49. {
  50. if (m_oAeccDoc == null) return;
  51. string name = m_oAeccDoc.Settings.AlignmentSettings.NameTemplate.Value;
  52. object alignmentStyle = m_oAeccDoc.AlignmentStyles[];
  53. object alignmentLadelset = m_oAeccDoc.AlignmentLabelStyleSets[];
  54. string slgName = m_oAeccDoc.Settings.SampleLineSettings.GroupNameTemplate.Value;
  55. AeccGroupPlotStyle GroupPlotStyle = m_oAeccDoc.GroupPlotStyles[];
  56. AeccSampleLineStyle SampleLineStyle = m_oAeccDoc.SampleLineStyles[];
  57. AeccLabelStyle SampleLineLabelStyle = m_oAeccDoc.SampleLineLabelStyles[];
  58. string slName = m_oAeccDoc.Settings.SampleLineSettings.NameTemplate.Value;
  59. double[] sp = new double[] { , , };
  60. double[] ep = new double[] { , , };
  61.  
  62. for (int i = ; i < ; i++)
  63. {
  64. comAlignment = m_oAeccDoc.AlignmentsSiteless.Add(
  65. name, "", alignmentStyle, alignmentLadelset);
  66. comAlignment.Entities.AddFixedLine1(sp,ep);
  67. for (int j = ; j < ; j++)
  68. {
  69. comSLG = comAlignment.SampleLineGroups.Add(
  70. slgName, "", GroupPlotStyle, SampleLineStyle, SampleLineLabelStyle);
  71.  
  72. double[] stations = new double[] { , , , , };
  73.  
  74. foreach (double sta in stations)
  75. {
  76. comSLG.SampleLines.AddByStation(slName, sta, , );
  77. }
  78. }
  79. }
  80.  
  81. }
  82.  
  83. public void CreateSurfaceTest()
  84. {
  85. string name = civilDoc.Settings.GetSettings<
  86. SettingsCmdCreateSurface>().NameFormat.Surface.Value;
  87. //Create 3 TinSurface
  88. for (int i = ; i < ; i++)
  89. {
  90. TinSurface.Create(db, name);
  91. }
  92. }
  93. public void CreateSampleLineGroupTest()
  94. {
  95. if (alignmentId == ObjectId.Null) return;
  96. try
  97. {
  98.  
  99. string name = civilDoc.Settings.GetSettings<
  100. SettingsSampleLine>().NameFormat.SampleLineGroup.Value;
  101. //Create 3 SampleLineGroup
  102. for (int i = ; i < ; i++)
  103. {
  104. samplineGroupId = SampleLineGroup.Create(name, alignmentId);
  105. }
  106.  
  107. }
  108. catch (System.Exception ex)
  109. {
  110. ed.WriteMessage("\n" + ex.Message);
  111. }
  112. }
  113. public void CreateSampleLineTest()
  114. {
  115. if (samplineGroupId == ObjectId.Null) return;
  116. try
  117. {
  118.  
  119. string name = civilDoc.Settings.GetSettings<
  120. SettingsSampleLine>().NameFormat.SampleLine.Value;
  121. double[] stations = new double[] { , , , , };
  122.  
  123. foreach (double sta in stations)
  124. {
  125. SampleLine.Create(name, samplineGroupId, sta);
  126. }
  127. }
  128. catch (System.Exception ex)
  129. {
  130. ed.WriteMessage("\n" + ex.Message);
  131. }
  132. }
  133.  
  134. public void CreateAlignmentTest()
  135. {
  136. try
  137. {
  138. string name = civilDoc.Settings.GetSettings<
  139. SettingsCmdCreateAlignmentLayout>()
  140. .DefaultNameFormat.AlignmentNameTemplate.Value;
  141. ObjectId layerId;
  142. using (Transaction tr = db.TransactionManager.StartTransaction())
  143. {
  144. LayerTable layertable = db.LayerTableId.GetObject(
  145. OpenMode.ForRead) as LayerTable;
  146. layerId = layertable[""];
  147. tr.Commit();
  148. }
  149. ObjectId styleId = civilDoc.Styles.AlignmentStyles[];
  150. ObjectId labelsetId = civilDoc.Styles.LabelSetStyles
  151. .AlignmentLabelSetStyles[];
  152. for (int i = ; i < ; i++)
  153. {
  154. alignmentId= Alignment.Create(
  155. civilDoc, name, ObjectId.Null, layerId, styleId, labelsetId);
  156. using (Transaction tr = db.TransactionManager.StartTransaction())
  157. {
  158. Alignment al = alignmentId.GetObject(OpenMode.ForWrite) as Alignment;
  159. al.Entities.AddFixedLine(new Point3d(, , ), new Point3d(, , ));
  160. tr.Commit();
  161. }
  162. }
  163. }
  164. catch (System.Exception ex)
  165. {
  166. ed.WriteMessage("\n" + ex.Message);
  167. }
  168. }
  169.  
  170. [CommandMethod("ComTest")]
  171. public void ComTest()
  172. {
  173. NameTemplateTest ntt = new NameTemplateTest();
  174. ntt.ComNameTemplateTest();
  175. }
  176. [CommandMethod("NetTest")]
  177. public void NetTest()
  178. {
  179. NameTemplateTest ntt = new NameTemplateTest();
  180. ntt.CreateSurfaceTest();
  181. ntt.CreateAlignmentTest();
  182. ntt.CreateSampleLineGroupTest();
  183. ntt.CreateSampleLineTest();
  184.  
  185. }
  186. }
  187. }
  188.  
  189. 使用NET API,曲面名称模板可以正常工作,采样线和路线名称模板不能正常工作。
  190.  
  191.  使用COM API 路线的采样线名称模板正常工作,采样线编组不行。
  192.  
  193.  

Civil 3D 二次开发 名称模板不能正常工作的更多相关文章

  1. Civil 3D 二次开发 创建Civil 3D 对象—— 01 —— 创建几何空间点

    这一小节,我们创建派生于CivilCreateEntityDemo的类CivilCreateCogoPoint,来创建几何空间点. 1 创建类并添加字段及方法 首先在项目资源管理器中向本项目中添加类, ...

  2. 学习 Civil 3D二次开发从哪儿开始?

    1.1 从哪儿开始 对于多数的工程设计人员,不完全具备上节所述的各种条件.对于Civil 3D的应用可能比较熟悉:但对于计算机语言,只限于上学时所学的一点基础知识,步入工作岗位后与计算机语言基本无缘: ...

  3. Civil 3D 二次开发 创建Civil 3D 对象—— 00 ——

    本节中我们通过创建几何空间点.曲面和采样线了解Civil 3D对象的创建方法.因Civil 3D对象的创建方法相比AutoCAD对象创建要简单的多,比如创建一个几何空间点,最简单的情况采用一行代码(没 ...

  4. Civil 3D 二次开发 创建AutoCAD对象—— 00 ——

    不积跬步无以至千里,不积小流无以成江海.虽然创建一条直线.添加一个图层这样的小程序没有什么实际意义(内部命令很简单就可以完成),但对于初学二次开发的您来说,这可是一大步,这一步跨出去,您就跨进了二次开 ...

  5. Civil 3D 二次开发 创建AutoCAD对象—— 01 —— 创建直线

    在方法CreateLine内完成以下代码: 01 public void CreateLine() 02 { 03 PromptPointOptions ppo = new PromptPointOp ...

  6. Civil 3D 二次开发 事务

    事务,一般是指要做的或所做的事情.在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit). 对于初学者来说,从字面上难以理解什么是事务.下面我试着通过讲述事务的作用及特性来帮 ...

  7. Civil 3D 二次开发 翻转曲面高程分析颜色

    不解释,直接上代码及截图. [CommandMethod("RvsSEA")] public void ReverseSurfaceElevationAnalysis() { Ci ...

  8. Civil 3D 二次开发 新建CLR项目出现错误C2143

    新建CLR项目出现错误C2143 按照Objectarx Training创建.net混合项目,编译时出现一下错误: 原因不明: 解决方法: 在Stdafx.h文件中添加: #define WIN32 ...

  9. TFS二次开发系列:五、工作项查询

    本节将讲述如何查询工作项,用于二次开发中定义获取工作项列表. 使用WorkItemStore.Query方法进行查询工作项,其使用的语法和SQL语法类似: Select [标题] from worki ...

随机推荐

  1. keras神经网络三个例子

    keras构造神经网络,非常之方便!以后就它了.本文给出了三个例子,都是普通的神经网络 例一.离散输出,单标签.多分类 例二.图像识别,单标签.多分类.没有用到卷积神经网络(CNN) 例三.时序预测, ...

  2. 10分钟开发 GPS 应用,了解一下

    1 前言 在导师公司实习了半个月,参加的是尾气遥测项目,我的任务是开发GPS 的相关事情,从零到有的开发出了 GPS 的 Winform 应用,在这里记录一下开发过程和简要的描述一下将 GPS 数据提 ...

  3. Signalr实现消息推送

    一.前言 大多数系统里面好像都有获取消息的功能,但这些消息来源都不是实时的,比如你开两个浏览器,用两个不同的账号登录,用一个账号给另外一个账号发送消息,然而并不会实时收到消息,必须要自己手动F5刷新一 ...

  4. item 24: 区分右值引用和universal引用

    本文翻译自<effective modern C++>,由于水平有限,故无法保证翻译完全正确,欢迎指出错误.谢谢! 博客已经迁移到这里啦 古人曾说事情的真相会让你觉得很自在,但是在适当的情 ...

  5. 52abp框架asp.net core & Angular快速开发实战视频教程

    课程标题 52abp框架asp.net core & Angular全栈开发实战视频课程 课程简介 从零开始学 52ABP企业开发框架,企业项目是如何开发和技术选型,代码如何管理,团队协同开发 ...

  6. Python-collections模块-57

    返回顶部 模块的导入和使用 模块的导入应该在程序开始的地方 更多相关内容 http://www.cnblogs.com/Eva-J/articles/7292109.html   常用模块 colle ...

  7. IP核引发的关于定,浮点数的认识

    上面是一段关于CORDIC_IP测试文件,用于计算给定角度的sin值和cos值,关于数值表示规则在此不再重复,仅仅说明以下3点: 1  数采用原码,反码,补码,本身并没有正确与否之分(这一点很重要,我 ...

  8. MySQL复制表的方式以及原理和流程

    复制表的俩种方式: 第一.只复制表结构到新表 create table 新表 select * from 旧表 where 1=2 或者 create table 新表 like 旧表 第二.复制表结 ...

  9. 逻辑回归为什么用sigmoid函数

    Logistic回归目的是从特征学习出一个0/1分类模型,而这个模型是将特性的线性组合作为自变量,由于自变量的取值范围是负无穷到正无穷. 因此,使用logistic函数(或称作sigmoid函数)将自 ...

  10. hana-banach定理

    1.  x1不是X除开G以外所有的空间 2.如果极大元不是全空间的话,根据前面的讨论,还可以延拓,这就和极大矛盾了