- MxDraw 云图
- 快速入门
- 前端 mxdraw 和 mxcad 库预览编辑图纸
- 后台使用 Node.js 调用梦想 API
- CAD 与 GIS 集成说明
- 梦想云图 Node.JS 服务
- iOS 开发
- 安卓开发
- 网页 CAD 开发
- 网页快速入门 aspaps.netphpjava
- 图形数据库
- 参数化绘图
- 交互绘图
- 选择集
- 扩展数据
- 自定义实体
- 自定义命令
- 光栅图处理
- 图面搜索
- 控件事件
- 打印控制
- 界面控制
- COM 开发
- 视频教程
- VB 快速入门
- Delphi 快速入门
- CSharp 快速入门
- java 快速入门
- QT 快速入门
- 易语言快速入门
- Powerbuilder 快速入门
- wpf 控件入门
- 图形数据库
- 参数化绘图
- 交互绘图
- 选择集
- 扩展数据
- 自定义命令
- 自定义实体
- 打印控制
- 控件事件
- 图面搜索
- 光栅图处理
- 界面控制
- C++ 开发
- C++ bulider 快速入门
- C++ 快速入门(VS2010)
- C++ 快速入门(com 接口)
- 图纸数据库
- 参数化绘图
- 交互绘图
- 选择集
- 扩展程序
- 扩展数据
- 自定义函数
- 自定义实体
- 光栅图处理
- 图面搜索
- 控件事件
- 界面控制
- 常见问题
- 试用技术服务申请
- 会员下载最新程序
- 备用下载
- 控件安装运行说明
- 控件最新更新
- 控件功能简介
- 控件图形数据库
- 控件界面控制
- 控件命令执行原理
- 控件系统变量说明
- 控件常见问题说明
- 修改对象属性
- 网页加载 CAD 图纸的两个方案
- MxDraw3D 控件
- 前端基础工程化知识
线型
DWG数据库中,线型样式存放在线型样式表中,表类名:MxDrawLinetypeTable
,它的详细接口说明参考:http://www.mxdraw.com/help/IMxDrawLinetypeTable.htm
线型样式表中每一条记录称为一种线型样式,类名:MxDrawLinetypeTableRecord
,它的详细接口说明参考:http://www.mxdraw.com/help/IMxDrawLinetypeTableRecord.htm
线型样式是随图纸保存,不同的图纸使用的线型样式都可能会不一样。
文字样式设置命令:Mx_Linetype, 比如:
ocx.SendStringToExecute("Mx_Linetype")
简单线型定义是通一个double数组来表示,大于零表示线型的实线长度,小于零表示线型的虚线长度,比如
1,-1,2,-2定义的线如下
在控件程序所在目录下有个mx.lin线型定义文件,定义了一些常用的线型,线型文件定义格式与AutoCAD线型定义文件一至,可在百度搜索到AutoCAD线型定义文件格式教程。
调用控件函数:LoadLinetypeFromFile
从线型文件加载线型,函数详细说明:http://www.mxdraw.com/help/MxDrawXLib___DMxDrawX__LoadLinetypeFromFile@BSTR@BSTR@VARIANT_BOOL.htm
下面代码,从线型文件加CENTER线型,然使用该线型,画一条直线
var lId = mxOcx.LoadLinetypeFromFile(mxOcx.GetOcxAppPath() + "//mx.lin", "CENTER",true); mxOcx.LineType = "CENTER"; mxOcx.DrawLine(0, 0, 100, 100);
修改全局线型比例代码如下:
//返回控件的数据库对象 var database = mxOcx.GetDatabase(); // 设置全局线型比例 database.LinetypeScale = 2.0;
MxDrawDatabase的CurrentlyLineTypeScale属性,设置新增加到数据库的对象的默认线型
缩放比例
MxDrawDatabase的CurrentlyLineTypeName属性,设置新增加到数据库的对象的默认线型
在有些时候,明明一些线有线型,但显示成实线的原因是,线型的中空白长度远远小于或远远大于当前视区显示的范围上长度(不在一个数量级上),此时控件会显示成实线,AutoCAD软件也一样。这时可以通修改对象的线型比例或全局线型比例,让线型的显示大小在一个合理范围内,也可通过放大或缩小视区后,然后使用重新命令重新生成显示。
线型在线演示例子:点击此处在线演示
A. 添加线型
使用控件的AddLinetype,AddLinetypeEx函数,添加一种线型,详细接口说明:http://www.mxdraw.com/help/MxDrawXLib___DMxDrawX__AddLinetype@BSTR@BSTR.htm
下面代码,添加一个虚线,然后绘制直线使用该线型
//绘制一个虚线 //定义虚线数据据,"MyLineType"是线型名,"6,-8"是虚线的一个单位定义,6是实线长,-8是空格长。 mxOcx.AddLinetype("MyLineType", "6,-10"); //设置当前线型为"MyLineType" mxOcx.LineType = "MyLineType"; //绘制一个虚线 mxOcx.DrawLine(0, 30, 100, 30); mxOcx.UpdateDisplay();
下面代码,添加一个带文字的线型,如下:
// 先添加一个线型中使用的文字样式 mxOcx.AddTextStyle1("MyLineTypeTextStyle", "txt.shx", "hztxt.shx", 1); //增加一个带有形的线型 mxOcx.AddLinetypeEx("MyLineType3", "(12.7,(\"T=MxDraw\",\"S=2.54\",\"L=-5.08\",\"R=0.0\",\"X=-2.54\",\"Y=-1.27\"),-10.08)", "MyLineTypeTextStyle"); // 设置当前绘图函数使用的线型 mxOcx.LineType = "MyLineType3"; mxOcx.LineWidth = 0; //绘制一个带宽度的红色点划线。 mxOcx.DrawLine(300, 120, 600, 120); mxOcx.LineWidth = 4; //绘制一个带宽度红色点划斜线 mxOcx.DrawLine(300, 220, 600, 220); //更新视区显示 mxOcx.UpdateDisplay();
运行效果如下:
B. 得到图上所有线型
下面C#代码,取到数据库的线型表,然后遍历表中所有线型记录对象,并得到线型名输出
var database = mxOcx.GetDatabase(); //返回数据库中的线型表对象 var linetypeTable = database.GetLinetypeTable(); //创建遍历器 var iter = linetypeTable.NewIterator(); if (iter == null) return; var sRet = null; //移动当前遍历器位置 for (; !iter.Done(); iter.Step(true, false)) { //返回遍历器当前位置的线型样式 var lineType = iter.GetRecord(); //得到文字样式名 sRet = sRet + ',' + lineType.Name; } alert(sRet);
C. 修对象的线型
下面代码,让用户在图上选择一个对象,然后新增加一个线型,再把对象的线型改成新增加的线型。
var ent = mxOcx.GetEntity("\n 选择实体对象:"); if (ent == null) { return; } mxOcx.AddLinetype("MyLineType", "6,-10"); // 设置实体线型。 ent.LineType = "MyLineType"; alert("已经修改线型"); mxOcx.UpdateDisplay();
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论