autocad net webcast 20110525

40
1 Autodesk Confidential Information May 2011 AutoCAD 2012 .NET API功能 叶雄进 Developer Technical Services 2011.5.25 ® 2010 Autodesk

Upload: michael-leblanc

Post on 24-Apr-2015

79 views

Category:

Documents


6 download

TRANSCRIPT

Page 1: Autocad Net Webcast 20110525

1Autodesk Confidential Information May 2011

AutoCAD 2012 .NET API功能

叶雄进Developer Technical Services

2011.5.25

® 2010 Autodesk

Page 2: Autocad Net Webcast 20110525

2Autodesk Confidential Information May 2011

关于讲师

叶雄进 Joe Ye

[email protected]

ADN DevTech部门

4年多软件开发咨询

5年土木行业软件研发

支持APIs

Revit

AutoCAD Architecture

AutoCAD

Page 3: Autocad Net Webcast 20110525

3Autodesk Confidential Information May 2011

调查

您的职业?

对AutoCAD .NET 编程了解如何?

Page 4: Autocad Net Webcast 20110525

4Autodesk Confidential Information May 2011

注意事项

讲座过程中,如果有问题,可以通过“Q&A”功能把问题及时提交给我。在后面答疑时一并答复。

Page 5: Autocad Net Webcast 20110525

5Autodesk Confidential Information May 2011

非基础知识

AutoCAD.Net API 基本知识可下载下面的讲座学习

AutoCAD .NET API 基本知识和功能讲座

基于AutoCAD2010 的讲座

相对于2010, AutoCAD2012 .NET 编程基本内容没有变化

Page 6: Autocad Net Webcast 20110525

6Autodesk Confidential Information May 2011

内容

2011 .Net API新功能概览

参数化约束API

生成曲面API

2012 .Net API 新功能

开发环境

3D 阵列 API

夹点菜单

Autoloader

Page 7: Autocad Net Webcast 20110525

7Autodesk Confidential Information May 2011

2011 .NET API 新功能概览

参数化约束 .NET API 功能

AutoCAD管理一套互动对象,一方发生改变时,关联的对象会发生预定的动作

Page 8: Autocad Net Webcast 20110525

8Autodesk Confidential Information May 2011

参数化 API

命令演示

演示命令代码可随本讲座的视频录像一起下载。

下载地址:http://www.adskconsulting.com/adn/cs/api_course_webc

ast_archive.php

Page 9: Autocad Net Webcast 20110525

9Autodesk Confidential Information May 2011

创建曲面API

Page 10: Autocad Net Webcast 20110525

10Autodesk Confidential Information May 2011

看一个对象创建代码

Page 11: Autocad Net Webcast 20110525

11Autodesk Confidential Information May 2011

创建曲面API

AutoCAD 2011 提供了创建各种曲面的.NET API

拉伸

Surface.CreateExtrudedSurface (Profile3d, Vector3d,

SweepOptions)

旋转

Surface.CreateRevolvedSurface (Profile3d, Point3d, Vector3d,

double, double, RevolveOptions)

扫掠

Surface.CreateSweptSurface Method (Profile3d, Profile3d,

SweepOptions)

Page 12: Autocad Net Webcast 20110525

12Autodesk Confidential Information May 2011

创建曲面API-1

混合

Surface.CreateBlendSurface Method (LoftProfile, LoftProfile,

BlendOptions)

偏移

Surface.CreateOffsetSurface Method (Entity, double)

除了创建曲面外,还提供了查询和编辑曲面功能

比如:修改混合曲面的上下面形状

Page 13: Autocad Net Webcast 20110525

13Autodesk Confidential Information May 2011

移植到2012

AutoCAD2012与2010/11的插件二进制兼容

在AutoCAD 2010/11编译的插件无需重编译可在2012上运行

.Net, ARX

版本号: R18.1 -> R18.2

.NET 程序需要的开发环境

.NET Framework 4

原用VS2008编译的可以加载使用

.NET程序需要Visual Studio 2010来调试

Page 14: Autocad Net Webcast 20110525

14Autodesk Confidential Information May 2011

新APIs

关联阵列API

生成阵列

矩形

弧形

沿给定曲线

编辑阵列单元中的实体

添加

删除

子对象删除,替换,矩阵变换,

阵列重置

Page 15: Autocad Net Webcast 20110525

15Autodesk Confidential Information May 2011

生成阵列步骤

1. 创建阵列参数,定义阵列样式(间距,数量,阵列路径,方向等)

AssocArrayRectangularParameters parameters = new

AssocArrayRectangularParameters(columnSpacing, rowSpacing,

levelSpacing, columnCount, rowCount,

levelCount, rowElevation, axesAngle);

2. 创建阵列对象

AssocArray array =

Autodesk.AutoCAD.DatabaseServices.AssocArray.CreateArray(sourceEntities,

basePoint,

parameters);

3. 建立关联

AssocManager.EvaluateTopLevelNetwork(db, null, 0);

Page 16: Autocad Net Webcast 20110525

16Autodesk Confidential Information May 2011

阵列涉及的类和函数1

参数类:

AssocArrayRectangularParameters

AssocArrayPolarParameters

AssocArrayPathParameters

阵列实体

AssocArray

增加对象到Array源定义中

AssocArray.AddSourceEntity(ObjectId, BasePoint);

删除Array源定义中的一个对象

AssocArray.RemoveSourceEntity(Index);

替换Array中的一个子对象

AssocArray.ReplaceItems(ItemLocators, substEntities, basePoint);

Page 17: Autocad Net Webcast 20110525

17Autodesk Confidential Information May 2011

阵列涉及的类和函数2

替换阵列中的一个子对象

AssocArray.ReplaceItems(ItemLocators, substEntities, basePoint);

删除阵列中的一个子对象

AssocArray.DeleteItem(itemLocator, true);

矩阵变换阵列中的一个子对象

AssocArray.TransformItemBy(itemLocator, transform);

重置阵列,回到创建时的状态

AssocArray.ResetItems();

Page 18: Autocad Net Webcast 20110525

18Autodesk Confidential Information May 2011

夹点菜单

当光标在强制协议实体的夹点上,显示自定义菜单

重载强制协议

DrawableOverrule

PropertiesOverrule

TransformOverrule

GripOverrule

OsnapOverrule

HighlightOverrule

ObjectOverrule

Page 19: Autocad Net Webcast 20110525

19Autodesk Confidential Information May 2011

加载AutoCAD二次开发模块

原来方式的特点

技术要求高,对AutoCAD十分了解

在安装程序中写安装软件的脚本程序

修改注册表

设置*.ar文件,加载菜单等

多个AutoCAD版本的协调

不同厂商之间的包容性

一方软件导致另一方软件无法正常加载运行

Page 20: Autocad Net Webcast 20110525

20Autodesk Confidential Information May 2011

自动加载-Autoloader

简化插件的部署

把内容都组织到一个文件夹中

安装过程只是拷贝文件夹

支持加载 .NET, ARX, DBX, LSP, FAS, CUI, MNU

XML 描述插件

兼容哪些平台版本

兼容哪些操作系统

是否按需加载

地方语言支持(将来)

支持路径

依赖关系

是否及时加载

Page 21: Autocad Net Webcast 20110525

21Autodesk Confidential Information May 2011

演示步骤

加载两个.net 插件

AutoCAD启动时加载

按需加载

步骤:

1. 理解代码工程功能

2. 查看并拷贝Bundles

3. 运行看过程

4. 解释加载XML文件

Page 22: Autocad Net Webcast 20110525

22Autodesk Confidential Information May 2011

拷贝到指定的目录中

%APPDATA%/Autodesk/ApplicationPlugins

对用户的管理权限要求最低

只对当前用户有效,对其他登录用户不可用

%ProgramFiles%/Autodesk/ApplicationPlugins

需要管理员权限 (Windows Vista/7 要求).

操作系统增加了Users后,无需再次安装即可用.

二选一

Page 23: Autocad Net Webcast 20110525

23Autodesk Confidential Information May 2011

最简单的自动加载设置

Test1 的加载文件PackageContents.xml

Page 24: Autocad Net Webcast 20110525

24Autodesk Confidential Information May 2011

最简单按需加载设置

Test2 的加载文件 PackageContents.xml

Page 25: Autocad Net Webcast 20110525

25Autodesk Confidential Information May 2011

稍复杂加载设置

功能:

1.按需加载ARX

2. Windows 32 ,64位( AutoCAD2010或2011上)

3. Mac ( AutoCAD2010\11\12上)

PackageContent.xml

Page 26: Autocad Net Webcast 20110525

26Autodesk Confidential Information May 2011

XML文件结构

1. XML 文件头

2. XML文件主体

3. ApplicationPackage: 对安装包的概要描述 (必需)

CompanyDetails : 公司描述(必需)

Components: 一组模块的说明

Components: 另一组模块的说明(必需)

RuntimeRequirements 运行条件

• ComponentEntry 模块1的描述

• ComponentEntry 模块2的描述(必需)

1. Command 命令1的描述

2. Command 命令2的描述

Page 27: Autocad Net Webcast 20110525

27Autodesk Confidential Information May 2011

ApplicationPackage的属性

产品安装包的信息

SchemaVersion (必需):

AppVersion (必需):

Author (可选):

Name (必需): NameDeu, NameEsp, NameFra.

Description (必需):

Icon (必需): 32x32 , 可达 32位真彩色,推荐 BMP or ICO.

Helpfile (必需): 你的网页地址或chm/pdf 相对路径

ProductCode (必需): GUID 字符串

UpgradeCode (可选):

Page 28: Autocad Net Webcast 20110525

28Autodesk Confidential Information May 2011

CompanyDetails 元素的参数

公司的信息

Name (必需): 公司名称

Phone (可选): 公司联系电话

Url (可选): 公司主页

Email (必需): 公司联系邮箱

Page 29: Autocad Net Webcast 20110525

29Autodesk Confidential Information May 2011

Components中的元素

模块(ARX、.NET、 Lsp、CUIx)的描述

包括多组模块

包含一个RuntimeRequirements 元素

包含多个ComponentEntry 元素

Page 30: Autocad Net Webcast 20110525

30Autodesk Confidential Information May 2011

RuntimeRequirements中的属性

OS (可选): „Mac‟, „Win32‟, and „Win64‟.

Platform (可选) 可组合,”AutoCAD|Civil3D”,AutoCAD2012不支持 Civil3D - Autodesk Civil 3D

AutoCAD - AutoCAD

AOEM - AutoCAD OEM

Map - Map

AIS - Inventor Series (AIS)

ADT - Architectural Desktop

ACADM - AutoCAD Mechanical (ACADM)

MEP - AutoCAD MEP

ACADE - AutoCAD Electrical (ACADE)

LDT - Land Desktop

AIP - Inventor Professional (AIP)

AIPRS - Inventor Professional for Routed Systems (AIPRS)

AIPSIM - Inventor Professional for Simulation (AIPSIM)

PNID - AutoCAD P & ID - 2D

Plant3D - AutoCAD Plant 3D

Civil - Autodesk Civil

SeriesMin (可选): 如18.0

SeriesMax (可选): 如18.2

SupportPath (可选)

Page 31: Autocad Net Webcast 20110525

31Autodesk Confidential Information May 2011

ComponentEntry中的属性

一个最基本模块的信息描述

AppName (AutoLISP 可选, ObjectARX 和 .NET必须) 应用名称 与AcadAppInfo.AppName等同

AppDescription (可选): 模块描述 与AcadAppInfo.AppDescription等同

ModuleName (必需):模块路径和文件名 在bundle子文件夹内的相对路径, AcadAppInfo.ModuleName

多语言支持:如ModuleNameEnu , ModuleNameFra.

AppType (可选): 应用程序类型 “Bundle“,“ARX“,“Lisp“,“CompiledLisp“,“Dbx“,“.NET“,“Cui“,“CuiX“,“Mnu“ and “Dependency“

Page 32: Autocad Net Webcast 20110525

32Autodesk Confidential Information May 2011

ComponentEntry中的属性

PerDocument (可选,): 适用于每一个文档

只有AutoLISP 适用

„LoadReasons’ (可选或多个): 值是True/False

LoadOnCommandInvocation

LoadOnAutoCADStartup

LoadOnProxyDetection

LoadOnAppearance

Page 33: Autocad Net Webcast 20110525

33Autodesk Confidential Information May 2011

Commands的属性

包含GroupName

包含多个命令

Page 34: Autocad Net Webcast 20110525

34Autodesk Confidential Information May 2011

控制插件加载行为的系统变量

APPAUTOLOAD

0 永远不加载插件

1 加载插件时,显示消息

2 在启动时加载插件

4 当打开新文件时加载插件

8 当有插件出现在指定的两个目录时,就加载该插件

Page 35: Autocad Net Webcast 20110525

35Autodesk Confidential Information May 2011

限制

新的加载工具考虑了大多数情况下的插件加载,一些复杂的使用情况可能没有考虑到。

原有的加载机制仍然保留,对于Autoloader不能满足要求的,需用已有的机制加载

CUIX 文件只能是 partial CUIX 文件

Page 36: Autocad Net Webcast 20110525

36Autodesk Confidential Information May 2011

模块加载总结

简化插件的部署

把内容都组织到一个文件夹中

安装过程只是拷贝文件夹

支持加载 .NET, ARX, DBX, LSP, FAS, CUI, MNU

XML 描述插件

兼容哪些平台版本

兼容哪些操作系统

是否按需加载

地方语言支持(将来)

支持路径

依赖关系

是否及时加载

Page 37: Autocad Net Webcast 20110525

37Autodesk Confidential Information May 2011

课程总结

2011 .Net API新功能概览

参数化约束API

生成曲面API

2012 .Net API 新功能

开发环境

3D 阵列 API

夹点菜单

Autoloader

Page 38: Autocad Net Webcast 20110525

38Autodesk Confidential Information May 2011

反馈

Page 39: Autocad Net Webcast 20110525

39Autodesk Confidential Information May 2011

Q&A

打开计算机麦克,参与者都能听到提问

Page 40: Autocad Net Webcast 20110525

40Autodesk Confidential Information May 2011

Thanks