autocad net webcast 20110525
TRANSCRIPT
1Autodesk Confidential Information May 2011
AutoCAD 2012 .NET API功能
叶雄进Developer Technical Services
2011.5.25
® 2010 Autodesk
2Autodesk Confidential Information May 2011
关于讲师
叶雄进 Joe Ye
ADN DevTech部门
4年多软件开发咨询
5年土木行业软件研发
支持APIs
Revit
AutoCAD Architecture
AutoCAD
3Autodesk Confidential Information May 2011
调查
您的职业?
对AutoCAD .NET 编程了解如何?
4Autodesk Confidential Information May 2011
注意事项
讲座过程中,如果有问题,可以通过“Q&A”功能把问题及时提交给我。在后面答疑时一并答复。
5Autodesk Confidential Information May 2011
非基础知识
AutoCAD.Net API 基本知识可下载下面的讲座学习
AutoCAD .NET API 基本知识和功能讲座
基于AutoCAD2010 的讲座
相对于2010, AutoCAD2012 .NET 编程基本内容没有变化
6Autodesk Confidential Information May 2011
内容
2011 .Net API新功能概览
参数化约束API
生成曲面API
2012 .Net API 新功能
开发环境
3D 阵列 API
夹点菜单
Autoloader
7Autodesk Confidential Information May 2011
2011 .NET API 新功能概览
参数化约束 .NET API 功能
AutoCAD管理一套互动对象,一方发生改变时,关联的对象会发生预定的动作
8Autodesk Confidential Information May 2011
参数化 API
命令演示
演示命令代码可随本讲座的视频录像一起下载。
下载地址:http://www.adskconsulting.com/adn/cs/api_course_webc
ast_archive.php
9Autodesk Confidential Information May 2011
创建曲面API
10Autodesk Confidential Information May 2011
看一个对象创建代码
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)
12Autodesk Confidential Information May 2011
创建曲面API-1
混合
Surface.CreateBlendSurface Method (LoftProfile, LoftProfile,
BlendOptions)
偏移
Surface.CreateOffsetSurface Method (Entity, double)
除了创建曲面外,还提供了查询和编辑曲面功能
比如:修改混合曲面的上下面形状
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来调试
14Autodesk Confidential Information May 2011
新APIs
关联阵列API
生成阵列
矩形
弧形
沿给定曲线
编辑阵列单元中的实体
添加
删除
子对象删除,替换,矩阵变换,
阵列重置
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);
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);
17Autodesk Confidential Information May 2011
阵列涉及的类和函数2
替换阵列中的一个子对象
AssocArray.ReplaceItems(ItemLocators, substEntities, basePoint);
删除阵列中的一个子对象
AssocArray.DeleteItem(itemLocator, true);
矩阵变换阵列中的一个子对象
AssocArray.TransformItemBy(itemLocator, transform);
重置阵列,回到创建时的状态
AssocArray.ResetItems();
18Autodesk Confidential Information May 2011
夹点菜单
当光标在强制协议实体的夹点上,显示自定义菜单
重载强制协议
DrawableOverrule
PropertiesOverrule
TransformOverrule
GripOverrule
OsnapOverrule
HighlightOverrule
ObjectOverrule
19Autodesk Confidential Information May 2011
加载AutoCAD二次开发模块
原来方式的特点
技术要求高,对AutoCAD十分了解
在安装程序中写安装软件的脚本程序
修改注册表
设置*.ar文件,加载菜单等
多个AutoCAD版本的协调
不同厂商之间的包容性
一方软件导致另一方软件无法正常加载运行
20Autodesk Confidential Information May 2011
自动加载-Autoloader
简化插件的部署
把内容都组织到一个文件夹中
安装过程只是拷贝文件夹
支持加载 .NET, ARX, DBX, LSP, FAS, CUI, MNU
XML 描述插件
兼容哪些平台版本
兼容哪些操作系统
是否按需加载
地方语言支持(将来)
支持路径
依赖关系
是否及时加载
21Autodesk Confidential Information May 2011
演示步骤
加载两个.net 插件
AutoCAD启动时加载
按需加载
步骤:
1. 理解代码工程功能
2. 查看并拷贝Bundles
3. 运行看过程
4. 解释加载XML文件
22Autodesk Confidential Information May 2011
拷贝到指定的目录中
%APPDATA%/Autodesk/ApplicationPlugins
对用户的管理权限要求最低
只对当前用户有效,对其他登录用户不可用
%ProgramFiles%/Autodesk/ApplicationPlugins
需要管理员权限 (Windows Vista/7 要求).
操作系统增加了Users后,无需再次安装即可用.
二选一
23Autodesk Confidential Information May 2011
最简单的自动加载设置
Test1 的加载文件PackageContents.xml
24Autodesk Confidential Information May 2011
最简单按需加载设置
Test2 的加载文件 PackageContents.xml
25Autodesk Confidential Information May 2011
稍复杂加载设置
功能:
1.按需加载ARX
2. Windows 32 ,64位( AutoCAD2010或2011上)
3. Mac ( AutoCAD2010\11\12上)
PackageContent.xml
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的描述
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 (可选):
28Autodesk Confidential Information May 2011
CompanyDetails 元素的参数
公司的信息
Name (必需): 公司名称
Phone (可选): 公司联系电话
Url (可选): 公司主页
Email (必需): 公司联系邮箱
29Autodesk Confidential Information May 2011
Components中的元素
模块(ARX、.NET、 Lsp、CUIx)的描述
包括多组模块
包含一个RuntimeRequirements 元素
包含多个ComponentEntry 元素
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 (可选)
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“
32Autodesk Confidential Information May 2011
ComponentEntry中的属性
PerDocument (可选,): 适用于每一个文档
只有AutoLISP 适用
„LoadReasons’ (可选或多个): 值是True/False
LoadOnCommandInvocation
LoadOnAutoCADStartup
LoadOnProxyDetection
LoadOnAppearance
33Autodesk Confidential Information May 2011
Commands的属性
包含GroupName
包含多个命令
34Autodesk Confidential Information May 2011
控制插件加载行为的系统变量
APPAUTOLOAD
0 永远不加载插件
1 加载插件时,显示消息
2 在启动时加载插件
4 当打开新文件时加载插件
8 当有插件出现在指定的两个目录时,就加载该插件
35Autodesk Confidential Information May 2011
限制
新的加载工具考虑了大多数情况下的插件加载,一些复杂的使用情况可能没有考虑到。
原有的加载机制仍然保留,对于Autoloader不能满足要求的,需用已有的机制加载
CUIX 文件只能是 partial CUIX 文件
36Autodesk Confidential Information May 2011
模块加载总结
简化插件的部署
把内容都组织到一个文件夹中
安装过程只是拷贝文件夹
支持加载 .NET, ARX, DBX, LSP, FAS, CUI, MNU
XML 描述插件
兼容哪些平台版本
兼容哪些操作系统
是否按需加载
地方语言支持(将来)
支持路径
依赖关系
是否及时加载
37Autodesk Confidential Information May 2011
课程总结
2011 .Net API新功能概览
参数化约束API
生成曲面API
2012 .Net API 新功能
开发环境
3D 阵列 API
夹点菜单
Autoloader
38Autodesk Confidential Information May 2011
反馈
39Autodesk Confidential Information May 2011
Q&A
打开计算机麦克,参与者都能听到提问
40Autodesk Confidential Information May 2011
Thanks