CAD填充图案从文件加载图案定义

1、在上一篇文章中介绍了在CAD图纸中由闭合区域一点绘制一个填充对象,那么这篇文章将介绍填充图案从文件加载图案定义。

2、实现思路:首先我们先在控件视区的闭合区域点取一点,然后利用DrawHatchFromPoint方法在当前控件显示范围内搜缩闭合区域,然后用该闭合区域创建填充对象。定义填充图案的文件名,再通过ObjectIdToObject方法由实体id返回实体对象,最后通过LoadPatternDefinition方法从文件加载图案定义就可以啦。

3、主要用到函数说明:

(1)_DMxDrawX::DrawHatchFromPoint

根据一个点,在当前控件显示范围内搜缩闭合区域,然后用该闭合区域创建填充对象,详细说明如下:

参数

说明

DOUBLE dX 

开始搜索点X值

DOUBLE dY 

开始搜索点y值

DOUBLE dPatternScale 

图案缩放比例

(2)IMxDrawDatabase::ObjectIdToObject

实体id返回实体对象,具体详细如下:

参数

说明

[in] LONGLONG lId

实体id

(3)IMxDrawHatch::LoadPatternDefinition

从文件加载图案定义,详细说明如下:

参数

说明

[in] BSTR pszFileName

图案定义文件

[in] BSTR pszName

图案名称

[in] DOUBLE dPatternScale

缩放比例,默认传1.0 dPatternAngel -角度,默认传0.0

c#代码实现如下:


                MxDrawUiPrPoint getPoint = new MxDrawUiPrPoint();
                getPoint.message = "点取一点:";                
                if (getPoint.go() != MCAD_McUiPrStatus.mcOk)                    
                return;
                MxDrawPoint pt = getPoint.value();
 
                axMxDrawX1.PatternDefinition = "SOLID";
                Int64 id = axMxDrawX1.DrawHatchFromPoint(pt.x, pt.y, 1.0);                
                if (id == 0)                    
                return;                
                // 修改新绘的填充的图案从文件中加载.
                String sPatternFile = axMxDrawX1.GetOcxAppPath() + "\mx.pat";
                String sPatternName = "ANSI35";
 
                MxDrawHatch hatch = (MxDrawHatch)axMxDrawX1.ObjectIdToObject(id);
                hatch.LoadPatternDefinition(sPatternFile, sPatternName, 300.0, 0.0);

js代码实现如下:


var getPoint = mxOcx.NewComObject("IMxDrawUiPrPoint");
 
getPoint.message = "点取一点";
 
if (getPoint.go() != 1) {
    return;
}
var frstPt = getPoint.value();
if (frstPt == null)
    return;
 
mxOcx.PatternDefinition = "SOLID";
var id = mxOcx.DrawHatchFromPoint(frstPt.x, frstPt.y, 1.0);
 
if (id == 0)
    return;
 
// 修改新绘的填充的图案从文件中加载.
var sPatternFile = mxOcx.GetOcxAppPath() + "\\mx.pat";
var sPatternName = "ANSI35";
 
var hatch = mxOcx.ObjectIdToObject(id);
hatch.LoadPatternDefinition(sPatternFile, sPatternName, 300.0, 0.0);

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值