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) 点对话框中确定按钮,结束命令.命令执行效果:所选每 ...
随机推荐
- Linux增加开放端口号
Linux增加开放端口号 : 方法一:命令行方式 1. 开放端口命令: /sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT 2.保存:/etc/ ...
- Selenium WebDriver原理(一):Selenium WebDriver 是怎么工作的?
首先我们来看一个经典的例子: 搭出租车 在出租车驾驶中,通常有3个角色: 乘客 : 他告诉出租车司机他想去哪里以及如何到达那里 对出租车司机说: 1.去阳光棕榈园东门 2.从这里转左 3.然后直行 2 ...
- 【翻译】asp.net core2.0中的token认证
原文地址:https://developer.okta.com/blog/2018/03/23/token-authentication-aspnetcore-complete-guide token ...
- Windows服务器上使用phpstudy部署PHP程序
一.下载并安装PHPStudy 官网地址:http://phpstudy.php.cn/(安装包下载地址:链接:https://pan.baidu.com/s/1WOmbOwmLuUPt3_nmY6- ...
- Python进阶6---序列化与反序列化
序列化与反序列化*** 为什么要序列化 ? 定义 pickle库 #序列化实例 import pickle lst = 'a b c'.split() with open('test.txt','wb ...
- kettle变量(var变量)
设置变量/set varibale 1.定义变量(子转换): 原始数据 设置获取变量:点击获取字段,自动获取变量名称和字段名称 引用变量: 输出: kettle.properties 文件存储在.ke ...
- CSS3 移动端 1PX 线变成0.5PX
.line1 {position:relative} .line1:after {content:'';position:absolute;bottom:0;left:0;width:100%;hei ...
- Vue.js 2.x笔记:指令(4)
1. 内置指令 指令是Vue.js 中一个重要的特性,主要提供了一种机制将数据的变化映射为DOM 行为. Vue.js 本身提供了大量的内置指令来进行对DOM 的操作,同时可以开发自定义指令. 2. ...
- 关于Eclipse使用Git基础篇
一:Git的下载与安装与基本使用 1.打开eclipse->help->Eclipse Markplace->search->fiind输入Egit 你会看到如下截图(我的为已 ...
- layui——Cannot create property 'LAY_TABLE_INDEX' on number '1'
前言 用layui写的后台,PHP处理好数据传输过来的时候报错了,最后发现是数据处理成layui格式的时候出错了,直接传了json对象过来,layui需要的是一个json的数. 解决 外面套成数组即可 ...