一位网友提出这样一个问题:

在使用SectionView.StyleName属性时,

会抛出异常:need to override property StyleName.

我测试的结果一样,

同时测试了StyleId

结果是类似的:need to override property StyleId().

于是我想通过COM方式来实现,

经过测试,

能够达到目的,

虽然绕了一些,

但总比不能实现要强一点点。

测试的代码如下:

        [CommandMethod("MyGroup", "Tt101", CommandFlags.Modal)]
public void TestCommand1() // This method can have any name
{
Document doc = Application.DocumentManager.CurrentDocument;
Editor ed = doc.Editor;
CivilDocument cDoc = CivilApplication.ActiveDocument;
PromptEntityOptions peo = new PromptEntityOptions("\n拾取横断面");
peo.SetRejectMessage("\n选择横断面图");
peo.AddAllowedClass(typeof(SectionView),true);
PromptEntityResult per = ed.GetEntity(peo);
if (per.Status==PromptStatus.OK)
{
try
{
//////using (Transaction tr = doc.TransactionManager.StartTransaction())
//////{
////// SectionView sv = per.ObjectId.GetObject(OpenMode.ForWrite) as SectionView;
////// //sv.StyleName = "测试样式"; //need to override property StyleName.
////// //var id = cDoc.Styles.SectionViewStyles["测试样式"];
////// //sv.StyleId = id; //need to override property StyleId().
////// tr.Commit();
//////}
//////////////////////////////////////////////////////////////////////////
IntPtr comIdPtr = per.ObjectId.OldIdPtr;
long comId = comIdPtr.ToInt64();
AeccSectionView asv = ComCivilDoc.ObjectIdToObject(comId);
var id = cDoc.Styles.SectionViewStyles["测试样式"];
AeccSectionViewStyle asvs= ComCivilDoc.ObjectIdToObject(id.OldId);//偷懒,试一下过时的方法还行不?
asv.set_Style(asvs);
}
catch (System.Exception ex)
{
ed.WriteMessage(ex.Message);
}
} }

代码中的ComCivilDoc详见《AutoCAD Civil 3D .NET二次开发》第226页,

转换方法在第232页。

测试以上代码需要测试的dwg文件中具有名称为“测试样式”的横断面图样式。

Civil 3d设置横断面图样式的更多相关文章

  1. 利用Civil 3D API更改曲面的样式

    如果你需要更改曲面的样式,比如更改等高线的颜色等等,在Civil 3D中,你可以通过在toolspace中选中曲面,然后点右键选择“Edit surface style…”然后切换到“Display” ...

  2. Civil 3D CustomDraw .NET混合项目设置

    样例文件中的CustomDraw项目使用的是COM API,但COM API不完整,某些时候需要使用.NET API,此时需要将C++项目设置成"公共语言运行时支持(/clr)"但 ...

  3. AutoCAD/Civil 3D 学习笔记

    Civil学习笔记 1.环境配置 1.添加引用: Civil二次开发需要5个基本的AutoCAD的dll引用-acdbmgd.dll, acmgd.dll, accoremgd.dll, AecBas ...

  4. asp.net数据导出到excel表格,并设置表格样式

    1.首先在项目中添加引用

  5. System.Diagnostics.Process启动Civil 3D及AutoCAD

    QQ群友提出问题, 如何启动Civil 3D或者AutoCAD, Kean的博客里有相关的文章 http://through-the-interface.typepad.com/through_the ...

  6. Civil 3D 2017本地化中VBA程序移植到2018版中

    中国本地化包简直就是一块鸡肋, 但对于某些朋友来说还真离不了: 可惜中国本地化包的推出一直滞后, 在最新版软件出来后1年多, 本地化还不一定能够出来, 即使出来了, 也只能是购买了速博服务的用户才能得 ...

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

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

  8. js设置css样式.

    在js设置css样式做法 var obj = document.getElementById('div'); obj.style.width = '100px'; obj.style.height = ...

  9. JS设置CSS样式的几种方式

    用JS来动态设置CSS样式,常见的有以下几种 1. 直接设置style的属性  某些情况用这个设置 !important值无效 如果属性有'-'号,就写成驼峰的形式(如textAlign)  如果想保 ...

随机推荐

  1. .net core实践系列之SSO-同域实现

    前言 SSO的系列还是以.Net Core作为实践例子与大家分享,SSO在Web方面复杂度分同域与跨域.本篇先分享同域的设计与实现,跨域将在下篇与大家分享. 如有需要调试demo的,可把SSO项目部署 ...

  2. 微信小程序获取formId时提示"the formId is a mock one"

    微信小程序使用模板消息需要使用表单提交 formId,因此进行了简单的代码测试,在 wxml 文件中创建 form 对象,并在 form 标签中声明属性 report-submit="tru ...

  3. 用asp.net core 把用户访问记录优化到极致

    菜菜呀,前几天做的用户空间,用户反映有时候比较慢呀 CEO,CTO,CFO于一身的CXO 是吗? 菜菜 我把你拉进用户反馈群,你解决一下呀 CEO,CTO,CFO于一身的CXO (完了,以后没清净时候 ...

  4. 我的微信小程序第一篇(入门)

    前言 微信小程序出来已经有一段时间了,已经有很多大牛都写过相关教程了,那么我为啥还要写这篇文章呢?其实仅仅是个人对微信开发的一个兴趣吧,觉得是个很有意思的事情,后面有时间可能会发更多关于小程序的文章, ...

  5. HTTP请求中的Keep-Alive模式,是怎么区分多个请求的?

    Keep-Alive模式 我们都知道HTTP是基于TCP的,每一个HTTP请求都需要进行三步握手.如果一个页面对某一个域名有多个请求,就会进行频繁的建立连接和断开连接.所以HTTP 1.0中出现了Co ...

  6. mybatis 的sql语句及使用mybatis的动态sql mybatis防注入

    由于看到写的比较详细的文档这里将之前的删掉了,只留下一些我认为能帮助理解的和关于动态sql及防注入的一些理解.文档链接  :mybatis官方文档介绍 <!-- 根据条件查询用户 --> ...

  7. html总结:背景图片拉伸

    两种方法: ⑴推荐方法 <style>body {background-image:url(images/backimage.jpg);background-size:cover;}< ...

  8. php使用gd库输出中文内容的图片

    正如标题所说那样,本文只讨论输出内容全部为中文或者包含中文的情况.如果内容全是字母或者其他字符的话,可以参考这篇博客:生成验证码 问题 此处要注意,标题中为什么要区别windows和linux分别实现 ...

  9. Mysql drop function xxxx ERROR 1305 (42000): FUNCTION (UDF) xxxx does not exist

    mysql> drop function GetEmployeeInformationByID;ERROR 1305 (42000): FUNCTION (UDF) GetEmployeeInf ...

  10. nginx之快速查找配置文件

    nginx的配置放在nginx.conf文件中,一般我们可以使用以下命令查看服务器中存在的nginx.conf文件.   locate nginx.conf /usr/local/nginx/conf ...