当前仓库属于暂停状态,部分功能使用受限,详情请查阅 仓库状态说明
1 Star 0 Fork 29

王守伟 / NFox
暂停

forked from InspireFunction / NFox
暂停
 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

NFox

目前,nfox停止开发,请转至ifoxcad项目

介绍

非狐的 AutoCad 工具类库,提供了大量的函数来简化 Autocad 的基于 .Net 二次开发。

诚邀各路朋友参与开发这个cad工具类库。您可以提交代码,可以写注释,可以提交建议,可以写用法示例,可以帮忙宣传。

软件架构

NFox 工具类库主要分为两个类库,一个是跟cad的操作直接相关的命名空间 NFox.Cad 类库,一个是通用性的工具命名空间 NFox.Basal 类库。

  • NFox.Cad
  • NFox.Basal
    • NFox.Collections
    • NFox.ComponentModel
    • NFox.Images
    • NFox.Runtime.Com
    • NFox.Runtime.Com.Reflection
    • NFox.Runtime
    • NFox.Runtime.Dll
    • NFox.WPF

安装教程

由于NFox内裤采用的是standard类型的类库,因此建议采用nuget形式进行安装和使用。直接在nuget上搜索NFox.Cad,安装即可开始使用内裤的所有功能。

采用standard类型类库和nuget的方式的好处是:

  • .net的发展的趋势就是干掉frameworks类型,只保留standard(core)类型。frameworks在4.8版本之后就不在升级了,以后都会统一到.net 5。因此现在采用standard类型是一个正确的选择。
  • 经过测试,cad是支持standard类型的类库加载和运行的,因此建议发现不可修复的bug之前,针对cad的二次开发也采用standard类型的类库。
  • 采用nuget管理引用是可以不用管本地是否有要引用的dll文件,同时nuget安装的类库还会自动升级,方便采用更新的类库。

使用说明

  1. 快速入门

    • 打开vs,新建一个standard类型的类库项目,修改项目文件里的<TargetFramework>netcore2.0</TargetFramework><TargetFrameworks>NET45</TargetFrameworks>。其中的net45,可以改为net40以上的任何版本。同时可以指定多版本。具体的详细的教程见 VS通过添加不同引用库,建立多条件编译
    • 右键项目文件,选择管理nuget程序包。
    • 在nuget程序里搜索NFox.Cad,直接选择最新的版本,然后点击安装。因为 NFox.Cad 依赖AutoCAD.NET、NFox.Basal,nuget会自动将依赖安装,可以根据你的cad的版本选择包的版本号,可以在项目文件里进行版本号指定,详细的教程见VS通过添加不同引用库,建立多条件编译。这里要注明的是:
      • AutoCAD.NET包是有桌子公司提供的,但是最低的版本为autocad2015以上,因此要开发autocad2015以下的版本的程序,请安装个人发布的程序包。
      • 经过测试,对于cad2013版本以上,可以直接使用net4.0进行开发,cad2012以下可以使用net3.5开发。同时经不完全测试,4.0以上的版本在高版本编译后可以用在低版本上。
      • 本内裤采用net4.5开发,主要依据为桌子公司提供的AutoCAD.NET包最低为net4.5版本的。
    • 添加引用
     using Autodesk.AutoCAD.ApplicationServices;
     using Autodesk.AutoCAD.EditorInput;
     using Autodesk.AutoCAD.Runtime;
     using Autodesk.AutoCAD.Geometry;
     using Autodesk.AutoCAD.DatabaseServices;
     using NFox.Cad;
    • 添加代码
     [CommandMethod("hello")]
     public void Hello()
     {
       using (DBTransaction tr = new DBTransaction())
       {
         Line line1 = new Line(new Point3d(0, 0, 0), new Point3d(1, 1, 0));
         Circle circle = new Circle(new Point3d(0, 0, 0), Vector3d.ZAxis, 10);
         tr.AddEntity(line1, circle);
       }
     }

这段代码就是在cad的当前空间内添加了一条直线和一个圆。

  • F6生成,然后打开cad,netload命令将刚刚生成的dll加载。
    • 运行hello命令,然后缩放一下视图,现在一条直线和一个圆已经显示在屏幕上了。
  1. 事务管理器用法

  2. 选择集过滤器用法

  3. 符号表用法

  4. WPF支持

  5. 天秀的自动加载与初始化

    为了将程序集的初始化和通过写注册表的方式实现自动加载统一设置,减少每次重复的工作量,内裤提供了AutoRegAssem抽象类来完成此功能,只要在需要初始化的类继承AutoRegAssem类,然后实现Initialize()Terminate()两个函数就可以了。特别强调的是,一个程序集里只能有一个类继承,不管是不是同一个命名空间。

    public class Test : AutoRegAssem //继承
    {
        public override void Initialize() //实现接口函数
        {
            throw new NotImplementedException();
        }
        public override void Terminate() //实现接口函数
        {
            throw new NotImplementedException();
        }
    }
  6. 天秀的打开模式提权

    由于cad的对象是有打开模式,是否可写等等,为了安全起见,在处理对象时,一般是用读模式打开,然后需要写数据的时候在提权为写模式,然后在降级到读模式,但是这个过程中,很容易漏掉某些步骤,然后cad崩溃。为了处理这些情况,内裤提供了提权类来保证读写模式的有序转换。

    using(line.ForWrite()) //开启对象写模式提权事务
    {
      //处理代码
    } //关闭事务自动处理读写模式
  7. 未完待续。。。。

参与贡献

  1. Fork 本仓库
  2. 新建 Feat_xxx 分支
  3. 提交代码
  4. 新建 Pull Request

码云特技

  1. 使用 Readme_XXX.md 来支持不同的语言,例如 Readme_en.md, Readme_zh.md
  2. 码云官方博客 blog.gitee.com
  3. 你可以 https://gitee.com/explore 这个地址来了解码云上的优秀开源项目
  4. GVP 全称是码云最有价值开源项目,是码云综合评定出的优秀开源项目
  5. 码云官方提供的使用手册 https://gitee.com/help
  6. 码云封面人物是一档用来展示码云会员风采的栏目 https://gitee.com/gitee-stars/

空文件

简介

非狐的Cad工具类库 展开 收起
C#
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
C#
1
https://gitee.com/xiariqing/NFox.git
git@gitee.com:xiariqing/NFox.git
xiariqing
NFox
NFox
master

搜索帮助