EaBIM一直以来积极响应国家“十二五”推进建筑业信息化的号召,对建筑领域的信息技术开展深入技术交流和探讨!致力于打造“BIM-建筑师-生态技术”三位一体综合资源交流共享平台,希望为BIM与可持续设计理念及技术的普及做出微小的贡献!!!

EaBIM

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
查看: 1810|回复: 26
打印 上一主题 下一主题

用AutoCAD.NET二次开发目前还不支持自定义对象,不过我们可以用一些其他的方法来...

[复制链接]

1514

主题

7465

帖子

1万

积分

admin

Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10

积分
12406

社区QQ达人

跳转到指定楼层
楼主
发表于 2014-1-8 16:41:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用AutoCAD.NET二次开发目前还不支持自定义对象,不过我们可以用一些其他的方法来实现自定义对象的效果,规则重定义可以控制对象的显示效果,即线可以显示成一根管,点可以显示成一个圆。下面看看规则重定义的例子把AutoCAD里面的直线变成一个空心管。
using System;

  1. <div align="left"><font color="#696969" face="Calibri" size="2">using Autodesk.AutoCAD.DatabaseServices;</font></div><div align="left"><font color="#696969" face="Calibri" size="2">using Autodesk.AutoCAD.Geometry;</font></div><div align="left"><font color="#696969" face="Calibri" size="2">using Autodesk.AutoCAD.Runtime;</font></div><div align="left"><font color="#696969" face="Calibri" size="2">using Autodesk.AutoCAD.GraphicsInterface;</font></div><div align="left"><font color="#696969" face="Calibri" size="2">
  2. </font></div><div align="left"><font color="#696969" face="Calibri" size="2">[assembly: CommandClass(typeof(Sample.LineToPipeOverule))]</font></div><div align="left"><font color="#696969" face="Calibri" size="2">namespace Sample</font></div><div align="left"><font color="#696969" face="Calibri" size="2">{</font></div><div align="left"><font color="#696969" face="Calibri" size="2">    class LineToPipeOverule</font></div><div align="left"><font color="#696969" face="Calibri" size="2">    {</font></div><div align="left"><font color="#696969" face="Calibri" size="2">        [CommandMethod("LineToPipe")]</font></div><div align="left"><font color="#696969" face="Calibri" size="2">        public void Start()</font></div><div align="left"><font color="#696969" face="Calibri" size="2">        {</font></div><div align="left"><font color="#696969" face="Calibri" size="2">            LineToPipe line=new LineToPipe(10);</font></div><div align="left"><font color="#696969" face="Calibri" size="2">            StartOverRule(RXClass.GetClass(typeof(Line)), line); </font></div><div align="left"><font color="#696969" face="Calibri" size="2">        }</font></div><div align="left"><font color="#696969" face="Calibri" size="2">
  3. </font></div><div align="left"><font color="#696969" face="Calibri" size="2">        [CommandMethod("EndOverRule")]</font></div><div align="left"><font color="#696969" face="Calibri" size="2">        public void End()</font></div><div align="left"><font color="#696969" face="Calibri" size="2">        {</font></div><div align="left"><font color="#696969" face="Calibri" size="2">            EndOverRule();</font></div><div align="left"><font color="#696969" face="Calibri" size="2">        }</font></div><div align="left"><font color="#696969" face="Calibri" size="2">
  4. </font></div><div align="left"><font color="#696969" face="Calibri" size="2">        /// <summary></font></div><div align="left"><font color="#696969" face="Calibri" size="2">        /// 启动重定义</font></div><div align="left"><font color="#696969" face="Calibri" size="2">        /// </summary></font></div><div align="left"><font color="#696969" face="Calibri" size="2">        /// <param name="CADClass">要重定义的类型</param></font></div><div align="left"><font color="#696969" face="Calibri" size="2">        /// <param name="overrule">把要重定义的类型定义为的对象</param></font></div><div align="left"><font color="#696969" face="Calibri" size="2">        public static void StartOverRule(RXClass CADClass, Overrule overrule)</font></div><div align="left"><font color="#696969" face="Calibri" size="2">        {</font></div><div align="left"><font color="#696969" face="Calibri" size="2">            Overrule.AddOverrule(CADClass, overrule, false);</font></div><div align="left"><font color="#696969" face="Calibri" size="2">            Overrule.Overruling = true;</font></div><div align="left"><font color="#696969" face="Calibri" size="2">        }</font></div><div align="left"><font color="#696969" face="Calibri" size="2">
  5. </font></div><div align="left"><font color="#696969" face="Calibri" size="2">        /// <summary></font></div><div align="left"><font color="#696969" face="Calibri" size="2">        /// 关闭重定义</font></div><div align="left"><font color="#696969" face="Calibri" size="2">        /// </summary></font></div><div align="left"><font color="#696969" face="Calibri" size="2">        public static void EndOverRule()</font></div><div align="left"><font color="#696969" face="Calibri" size="2">        {</font></div><div align="left"><font color="#696969" face="Calibri" size="2">            Overrule.Overruling = false;</font></div><div align="left"><font color="#696969" face="Calibri" size="2">        }</font></div><div align="left"><font color="#696969" face="Calibri" size="2">    }</font></div><div align="left"><font color="#696969" face="Calibri" size="2">
  6. </font></div><div align="left"><font color="#696969" face="Calibri" size="2">
  7. </font></div><div align="left"><font color="#696969" face="Calibri" size="2">    /// <summary></font></div><div align="left"><font color="#696969" face="Calibri" size="2">    ///  线显示成管</font></div><div align="left"><font color="#696969" face="Calibri" size="2">    /// </summary></font></div><div align="left"><font color="#696969" face="Calibri" size="2">    public class LineToPipe : DrawableOverrule</font></div><div align="left"><font color="#696969" face="Calibri" size="2">    {</font></div><div align="left"><font color="#696969" face="Calibri" size="2">        private double r;</font></div><div align="left"><font color="#696969" face="Calibri" size="2">        public LineToPipe(double R)</font></div><div align="left"><font color="#696969" face="Calibri" size="2">        {</font></div><div align="left"><font color="#696969" face="Calibri" size="2">            r = R;</font></div><div align="left"><font color="#696969" face="Calibri" size="2">        }</font></div><div align="left"><font color="#696969" face="Calibri" size="2">        public override bool WorldDraw(Drawable drawable, WorldDraw wd)</font></div><div align="left"><font color="#696969" face="Calibri" size="2">        {</font></div><div align="left"><font color="#696969" face="Calibri" size="2">            if (drawable is Line)</font></div><div align="left"><font color="#696969" face="Calibri" size="2">            {</font></div><div align="left"><font color="#696969" face="Calibri" size="2">                Line line = (Line)drawable;</font></div><div align="left"><font color="#696969" face="Calibri" size="2">                Circle circle = new Circle(line.StartPoint, line.EndPoint - line.StartPoint, r);</font></div><div align="left"><font color="#696969" face="Calibri" size="2">                ExtrudedSurface pipe = new ExtrudedSurface();</font></div><div align="left"><font color="#696969" face="Calibri" size="2">                pipe.CreateExtrudedSurface(circle, line.EndPoint - line.StartPoint, new SweepOptions());</font></div><div align="left"><font color="#696969" face="Calibri" size="2">                pipe.WorldDraw(wd);</font></div><div align="left"><font color="#696969" face="Calibri" size="2">                circle.Dispose();</font></div><div align="left"><font color="#696969" face="Calibri" size="2">                pipe.Dispose();</font></div><div align="left"><font color="#696969" face="Calibri" size="2">            }</font></div><div align="left"><font color="#696969" face="Calibri" size="2">            return true;</font></div><div align="left"><font color="#696969" face="Calibri" size="2">        }</font></div><div align="left"><font color="#696969" face="Calibri" size="2">    }</font></div><div align="left"><font color="#696969" face="Calibri" size="2">}</font></div>
复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 转播转播 分享分享 分享淘帖 支持支持 反对反对
工作时间:工作日的9:00-12:00/13:30-18:00,节假日不在线,请勿留言

18

主题

702

帖子

1270

积分

BIM经理

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

积分
1270
推荐
发表于 2014-6-9 15:51:23 | 只看该作者
路过!!! 不发表意见……

4

主题

846

帖子

1300

积分

BIM经理

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

积分
1300
推荐
发表于 2014-5-22 15:39:12 | 只看该作者
路过!!! 不发表意见……

66

主题

1001

帖子

2354

积分

BIM顾问

Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8

积分
2354

元老勋章特殊贡献勋章

推荐
发表于 2014-6-11 18:15:42 | 只看该作者
(*^__^*) 嘻嘻……
官方主页:www.eabim.net

3

主题

928

帖子

1394

积分

BIM经理

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

积分
1394
7F
发表于 2014-3-10 13:24:35 | 只看该作者
顶...... 楼下跟上.....

7

主题

888

帖子

2054

积分

BIM经理

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

积分
2054
13F
发表于 2014-3-14 11:21:38 | 只看该作者
路过!!!
不发表意见……

5

主题

857

帖子

1390

积分

BIM经理

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

积分
1390
14F
发表于 2014-3-14 11:30:58 | 只看该作者
路过!!!
不发表意见……

14

主题

867

帖子

1439

积分

BIM经理

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

积分
1439
17F
发表于 2014-5-13 10:22:39 | 只看该作者
顶......
楼下跟上.....

0

主题

836

帖子

1198

积分

BIM项目负责人

Rank: 5Rank: 5Rank: 5Rank: 5Rank: 5

积分
1198
18F
发表于 2014-5-13 10:30:24 | 只看该作者
顶......
楼下跟上.....
*滑块验证:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|EaBIM网 ( 苏ICP备2020058923号-1  苏公网安备32011502011255号

GMT+8, 2024-11-27 10:08

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表