bently addin 二次开发学习
元素结构:
一些基本元素的添加与绘制:
class CreateElement
{
public static void LineAndLineString()
{
Application app = Utilities.ComApp;
Point3d startPnt = app.Point3dZero();
Point3d endPnt = startPnt;
startPnt.X = 10;
LineElement oLine = app.CreateLineElement2(null, ref startPnt, ref endPnt);
oLine.Color = 0; oLine.LineWeight = 2;
app.ActiveModelReference.AddElement(oLine);
Point3d[] pntArray = new Point3d[5];
pntArray[0] = app.Point3dZero();
pntArray[1] = app.Point3dFromXY(1, 2);
pntArray[2] = app.Point3dFromXY(3, ‐2);
pntArray[3] = app.Point3dFromXY(5, 2);
pntArray[4] = app.Point3dFromXY(6, 0);
oLine = app.CreateLineElement1(null, ref pntArray);
oLine.Color = 1; oLine.LineWeight = 2;
app.ActiveModelReference.AddElement(oLine);
}
public static void ShapeAndComplexShape()
{
Application app = Utilities.ComApp;
Point3d[] pntArray = new Point3d[6];
pntArray[0] = app.Point3dFromXY(0, ‐6);
pntArray[1] = app.Point3dFromXY(0, ‐2);
pntArray[2] = app.Point3dFromXY(2, ‐2);
pntArray[3] = app.Point3dFromXY(2, ‐4);
pntArray[4] = app.Point3dFromXY(4, ‐4);
pntArray[5] = app.Point3dFromXY(4, ‐6);
ShapeElement oShape = app.CreateShapeElement1(null, ref pntArray);
oShape.Color = 0; oShape.LineWeight = 2;
app.ActiveModelReference.AddElement(oShape);
ChainableElement[] elmArray = new ChainableElement[2];
for (int i = 0; i
< 6; i++)
pntArray[i].X += 5;
elmArray[0] = app.CreateLineElement1(null, ref pntArray);
pntArray[2].Y = ‐8;
elmArray[1] = app.CreateArcElement3(null, ref pntArray[5], ref pntArray[2],
ref pntArray[0]);
ComplexShapeElement oComplexShape = app.CreateComplexShapeElement1(ref
elmArray);
oComplexShape.Color = 1; oComplexShape.LineWeight = 2;
app.ActiveModelReference.AddElement(oComplexShape);
}
public static void TextAndTextNode()
{
Application app = Utilities.ComApp;
double savedTextHeight = app.ActiveSettings.TextStyle.Height;
double savedTextWidth = app.ActiveSettings.TextStyle.Width;
Font savedFont = app.ActiveSettings.TextStyle.Font;
bool savedAnnotationScaleEnabled = app.ActiveSettings.AnnotationScaleEnabled;
app.ActiveSettings.TextStyle.Height = 0.7;
app.ActiveSettings.TextStyle.Width = 0.6;
app.ActiveSettings.TextStyle.Font =
app.ActiveDesignFile.Fonts.Find(MsdFontType.WindowsTrueType,
"Arial");
app.ActiveSettings.AnnotationScaleEnabled = false;
Point3d origin = app.Point3dFromXY(0, ‐7.5);
Matrix3d rMatrix = app.Matrix3dIdentity();
TextElement oText = app.CreateTextElement1(null, "Text String", ref
origin,
ref rMatrix);
oText.Color = 0;
app.ActiveModelReference.AddElement(oText);
origin = app.Point3dFromXY(2, ‐9);
TextNodeElement oTN = app.CreateTextNodeElement1(null, ref origin, ref
rMatrix);
oTN.AddTextLine("Text Node Line 1");
oTN.AddTextLine("Text Node Line 2");
oTN.Color = 1;
app.ActiveModelReference.AddElement(oTN);
app.ActiveSettings.TextStyle.Height = savedTextHeight;
app.ActiveSettings.TextStyle.Width = savedTextWidth;
app.ActiveSettings.TextStyle.Font = savedFont;
app.ActiveSettings.AnnotationScaleEnabled = savedAnnotationScaleEnabled;
}
public static void CellAndSharedCell()
{
Application app = Utilities.ComApp;
app.AttachCellLibrary("sample2.cel");
Point3d origin = app.Point3dFromXY(1, ‐13);
double xScale = 0.1 * app.ActiveModelReference.UORsPerMasterUnit / 1000.0;
Point3d scale = app.Point3dFromXYZ(xScale, xScale, xScale);
Matrix3d rMatrix = app.Matrix3dIdentity();
CellElement oCell = app.CreateCellElement2("DECID", ref origin, ref
scale,
true, ref rMatrix);
oCell.Color = 0;
app.ActiveModelReference.AddElement(oCell);
SharedCellElement oSC;
xScale = 0.02 * app.ActiveModelReference.UORsPerMasterUnit / 1000.0;
scale = app.Point3dFromXYZ(xScale, xScale, xScale);
for (int x = 4; x <= 8; x += 2)
{
origin = app.Point3dFromXY(x, ‐14);
oSC = app.CreateSharedCellElement2("NORTH", ref origin, ref scale,
true,
ref rMatrix);
oSC.OverridesComponentColor = true; oSC.Color = 1;
app.ActiveModelReference.AddElement(oSC);
}
}
public static void LinearAndAngularDimension()
{
Application app = Utilities.ComApp;
DimensionStyle ds = app.ActiveSettings.DimensionStyle;
ds.OverrideAnnotationScale = true; ds.AnnotationScale = 1;
ds.OverrideTextHeight = true; ds.TextHeight = 0.5;
ds.OverrideTextWidth = true; ds.TextWidth = 0.4;
ds.MinLeader = 0.01;
ds.TerminatorArrowhead = MsdDimTerminatorArrowhead.Filled;
Matrix3d rMatrix = app.Matrix3dIdentity();
Point3d[] pnts = new Point3d[3];
pnts[0] = app.Point3dFromXY(0, ‐17);
pnts[1] = app.Point3dFromXY(3, ‐17);
DimensionElement oDim = app.CreateDimensionElement1(null, ref rMatrix,
MsdDimType.SizeArrow);
oDim.AddReferencePoint(app.ActiveModelReference, ref pnts[0]);
oDim.AddReferencePoint(app.ActiveModelReference, ref pnts[1]);
oDim.Color = 0; oDim.DimHeight = 1;
app.ActiveModelReference.AddElement(oDim);
ds.AnglePrecision = MsdDimValueAnglePrecision.DimValueAnglePrecision1Place;
oDim = app.CreateDimensionElement1(null, ref rMatrix, MsdDimType.AngleSize);
pnts[0] = app.Point3dFromXY(7, ‐13);
pnts[1] = app.Point3dFromXY(5, ‐15);
pnts[2] = app.Point3dFromXY(9, ‐15);
oDim.AddReferencePoint(app.ActiveModelReference, ref pnts[0]);
oDim.AddReferencePoint(app.ActiveModelReference, ref pnts[1]);
oDim.AddReferencePoint(app.ActiveModelReference, ref pnts[2]);
oDim.Color = 1; oDim.DimHeight = 1;
app.ActiveModelReference.AddElement(oDim);
}
public static void CurveAndBsplineCurve()
{
Application app = Utilities.ComApp;
Point3d[] pntArray = new Point3d[5];
pntArray[0] = app.Point3dFromXY(0, ‐19);
pntArray[1] = app.Point3dFromXY(1, ‐17);
pntArray[2] = app.Point3dFromXY(2, ‐19);
pntArray[3] = app.Point3dFromXY(3, ‐17);
pntArray[4] = app.Point3dFromXY(4, ‐19);
CurveElement oCurve = app.CreateCurveElement1(null, ref pntArray);
oCurve.Color = 0; oCurve.LineWeight = 2;
app.ActiveModelReference.AddElement(oCurve);
for (int i = 0; i < 5; i++)
pntArray[i].X += 5;
InterpolationCurve oInterpolationCurve = new InterpolationCurveClass();
oInterpolationCurve.SetFitPoints(pntArray);
BsplineCurveElement oBsplineCurve = app.CreateBsplineCurveElement2(null,
oInterpolationCurve);
|
oBsplineCurve.Color = 1; |
oBsplineCurve.LineWeight = 2; |
|
app.ActiveModelReference.AddElement(oBsplineCurve); |
|
|
} |
|
|
public static void |
|
|
{ |
|
|
Application app = Utilities.ComApp; |
|
|
Point3d basePt = app.Point3dFromXYZ(2, |
|
|
Point3d topPt = app.Point3dFromXYZ(2, |
|
Matrix3d rMatrix =
app.Matrix3dFromAxisAndRotationAngle(0, app.Pi()/6);
ConeElement oCone
= app.CreateConeElement1(null, 2, ref basePt, 1, ref topPt,
ref rMatrix);
oCone.Color = 0;
app.ActiveModelReference.AddElement(oCone);
Point3d[] aFitPnts = new Point3d[4];
InterpolationCurve oFitCurve = new InterpolationCurveClass();
BsplineCurve[] aCurves = new BsplineCurve[3];
aFitPnts[0] =
app.Point3dFromXYZ(5.9, ‐21, ‐0.5);
aFitPnts[1] = app.Point3dFromXYZ(6.9, ‐20, 1);
aFitPnts[2] = app.Point3dFromXYZ(7.9, ‐20.3, 1.3);
aFitPnts[3] = app.Point3dFromXYZ(8.9, ‐20.8, 0.3);
oFitCurve.SetFitPoints(ref aFitPnts);
oFitCurve.BesselTangents = true;
aCurves[0] = new BsplineCurveClass();
aCurves[0].FromInterpolationCurve(oFitCurve);
aFitPnts[0] = app.Point3dFromXYZ(6.4, ‐22, 0);
aFitPnts[1] = app.Point3dFromXYZ(7.1, ‐21.2, 0.7);
aFitPnts[2] = app.Point3dFromXYZ(7.7, ‐21, 1);
aFitPnts[3] = app.Point3dFromXYZ(8.4, ‐21.7, ‐0.2);
oFitCurve.SetFitPoints(ref aFitPnts);
oFitCurve.BesselTangents = true;
aCurves[1] = new BsplineCurveClass();
aCurves[1].FromInterpolationCurve(oFitCurve);
aFitPnts[0] = app.Point3dFromXYZ(5.9, ‐23, 0);
aFitPnts[1] = app.Point3dFromXYZ(7.2, ‐23.1, 1.2);
aFitPnts[2] = app.Point3dFromXYZ(7.8, ‐23.3, 0.8);
aFitPnts[3] = app.Point3dFromXYZ(8.7, ‐22.8, 0.2);
oFitCurve.SetFitPoints(ref aFitPnts);
oFitCurve.BesselTangents = true;
aCurves[2] = new BsplineCurveClass();
aCurves[2].FromInterpolationCurve(oFitCurve);
BsplineSurface oBsplineSurface = new BsplineSurfaceClass();
oBsplineSurface.FromCrossSections(ref aCurves, MsdBsplineSurfaceDirection.V,
4, true, true);
BsplineSurfaceElement oSurfaceElm = app.CreateBsplineSurfaceElement1(null,
oBsplineSurface);
oSurfaceElm.Color = 1;
app.ActiveModelReference.AddElement(oSurfaceElm);
}
}
}
4. 打開MyAddins.cs文件修改如下。
4. Open file
MyAddins.cs and modify it as below.
protected override
int Run(string[] commandLine)
{
//string sWinFrameworkPath = RuntimeEnvironment.GetRuntimeDirectory();
//MessageBox.Show("Framework Path =" + sWinFrameworkPath);
CreateElement.LineAndLineString();
CreateElement.ShapeAndComplexShape();
CreateElement.TextAndTextNode();
CreateElement.CellAndSharedCell();
CreateElement.LinearAndAngularDimension();
CreateElement.CurveAndBsplineCurve();
CreateElement.ConeAndBsplineSurface();
return 0;
}
窗口停靠:
画如下图形:
使用样条线可以实现revit历练类似放样融合的功能。
可以调用mdl的接口:
还有一些事件映射,现在暂时用不到。
bently addin 二次开发学习的更多相关文章
- Civil 3D API二次开发学习指南
Civil 3D构建于AutoCAD 和 Map 3D之上,在学习Civil 3D API二次开发之前,您至少需要了解AutoCAD API的二次开发,你可以参考AutoCAD .NET API二次开 ...
- spss C# 二次开发 学习笔记(三)——Spss .Net 开发
Spss .Net 二次开发的学习过程暂停了一段时间,今天开始重启. 之前脑残的不得了,本想从网上下载一个Spss的安装包,然后安装学习.于是百度搜索Spss,在百度搜索框的列表中看到Spss17.S ...
- spss C# 二次开发 学习笔记(一)——配置数据源
由于项目的需要,使用Spss进行数据统计分析. Spss对于数据统计分析的功能有多强主要是客户关注的事情,我所主要关注的是,Spss的二次开发有多复杂. 学习的基本思路是: (1)首先了解统计基本知识 ...
- EcShop二次开发学习方法和Ecshop二次开发必备基础
ecshop二次开发学习方法 近年来,随着互联网的发展,电子商务也跟着一起成长,B2B,C2C,B2C的电子商务模式也不断的成熟.这时催生出了众多电子商务相关的php开源产品.B2C方面有Ecshop ...
- spss C# 二次开发 学习笔记(六)——Spss统计结果的输出
Spss的二次开发可以很简单,实例化一个对象,然后启用服务,接着提交命令,最后停止服务. 其中重点为提交命令,针对各种统计功能需求,以及被统计分析的数据内容等,命令的内容可以很复杂,但也可以简单的为一 ...
- spss C# 二次开发 学习笔记(五)——Spss系统集成模式
Spss官方不支持Server2008R2等Server系列,但做Spss的二次开发,调用Spss的Web系统,一般部署在Server系列上,例如Server2008R2. 起初,在Server上安装 ...
- spss C# 二次开发 学习笔记(四)——Spss授权
Spss的授权方式有两种,单机版和网络版. Spss的激活,在联网的情况下,通过20位的激活码激活,在未联网的情况下,Spss根据机器获取一个类似4-XXXX的锁定码,然后由激活码和锁定码算出一个授权 ...
- Autodesk View and Data API二次开发学习指南
什么是View and Data API? 使用View and Data API,你可以轻松的在网页上显示大型三维模型或者二维图纸而不需要安装任何插件.通过View and Data API,你可以 ...
- .NET CAD二次开发学习第一天
基于浩辰CAD2019 需求: 开发线转圆简单命令.命令过程:1) 请选择图中直线(要求支持一次选多个):2) 弹出对话框,输入圆的图层名和半径3) 点对话框中确定按钮,结束命令.命令执行效果:所选每 ...
随机推荐
- Debate CodeForces - 1070F (贪心)
Elections in Berland are coming. There are only two candidates — Alice and Bob. The main Berland TV ...
- Vue—组件传值及vuex的使用
一.父子组件之间的传值 1.父组件向子组件传值: 子组件在props中创建一个属性,用以接收父组件传来的值 父组件中注册子组件 在子组件标签中添加子组件props中创建的属性 把需要传给子组件的值赋给 ...
- flutter 返回键监听
本篇为继上片监听返回键基础下优化: 以下做返回键监听两种情况: import 'package:fluttertoast/fluttertoast.dart'; //提示第三方插件 1. 单击提示双击 ...
- js定时器 实现提交成功提示
应用场景: 用户评论后,在合适位置弹出“评论成功”,2秒钟后自动消失,提示用户评论成功. HTML: {#评论成功提示#} <div class="popup_con" st ...
- Nginx HTTP变量原理
L:72 首先如何获取url追加参数值 如: http://www.xxx.com?a=1&b=2 return '$arg_a, $arg_b'; #通过前缀 arg_a 就能获取到 参数a ...
- MSSQL-最佳实践-Always Encrypted
摘要 在SQL Server安全系列专题月报分享中,往期我们已经陆续分享了:如何使用对称密钥实现SQL Server列加密技术.使用非对称密钥实现SQL Server列加密.使用混合密钥实现SQL S ...
- 【LOJ#3097】[SNOI2019]通信(费用流)
[LOJ#3097][SNOI2019]通信(费用流) 题面 LOJ 题解 暴力就直接连\(O(n^2)\)条边. 然后分治/主席树优化连边就行了. 抄zsy代码,zsy代码是真的短 #include ...
- <TCP/IP原理> (二) OSI模型和TCP/IP协议族
1.OSI参考模型 1)作用 2)各层的名称和功能 2.对分层网络协议体系的理解 1)不同节点:层次组成不同,作用不同 2)横向理解:虚通信.对等实体.协议.PDU 3)纵向理解:封装与解封.服务.接 ...
- spring 中的设计模式
https://mp.weixin.qq.com/s?__biz=MzU0MDEwMjgwNA==&mid=2247485205&idx=1&sn=63455d2313776d ...
- Redisson实现分布式锁
转: Redisson实现分布式锁 Redisson文档参考:https://github.com/redisson/redisson/wiki/%E7%9B%AE%E5%BD%95 redis是实现 ...