objectarx 得到有宽度的多段的轮廓

使用到的命令是:_.wmfout和_.import以及PEdit
步骤:1.先通过_.wmfout和_.import得到轮廓线,得到的轮廓线是一个块。方法如下:
//ssname:选择的有宽度的多段线
static AcDbObjectId wmfoutIn(ads_name& ssname)
{
acedCommandS(RTSTR, L"_.wmfout", RTSTR, L"E:\\temp_1.wmf", RTENAME, ssname, RTSTR, L"", RTNONE);
acedCommandS(RTSTR, L"_.import", RTSTR, L"E:\\temp_1.wmf", RTNONE);
acdbEntLast(ssname);
AcDbObjectId entId;
acdbGetObjectId(entId, ssname);
AcDbBlockReference* pBlk = NULL;
AcGePoint3d ptBase;
AcGeMatrix3d mat;
if (acdbOpenObject(pBlk, entId, AcDb::kForWrite) == Acad::eOk)
{
ptBase = pBlk->position();
mat.setToScaling(2.0, ptBase);
pBlk->transformBy(mat);
pBlk->close(); return entId;
} return AcDbObjectId::kNull;
}
AcDbVoidPtrArray voidArr;
es = pBlk->explode(voidArr);
if (es == ErrorStatus::eOk) {
for (int j = ; j < voidArr.length(); j++)
{
AcDb2dPolyline *pl2d = (AcDb2dPolyline*)voidArr[j];
AcDbVoidPtrArray voidArr2d;
es = pl2d->explode(voidArr2d);
if (es == ErrorStatus::eOk) {
for (int m = ; m < voidArr2d.length(); m++)
{
AcDbLine * line = (AcDbLine*)voidArr2d[m];
vecLines.push_back(line);
}
}
delete pl2d;
pl2d = NULL;
}
}
3.这样得到的直线集合,发现除了能得到轮廓之后,在轮廓内部还会有重叠的直线,所以这一步就是删除轮廓内部重叠的直线。
for (int i = ; i < (int)vecLines.size(); i++)
{
AcDbLine * l1 = vecLines[i];
if (l1 == NULL) {
continue;
}
int m = ;
for (int j = i + ; j < (int)vecLines.size(); j++)
{
AcDbLine * l2 = vecLines[j];
if (l2 == NULL || l1 == NULL) {
break;
}
if (IsEqual(l1->startPoint(), l2->startPoint(), 1e-) && IsEqual(l1->endPoint(), l2->endPoint(), 1e-)) { vecLines.erase(vecLines.begin() + i - m, vecLines.begin() + i + - m);
m++;
vecLines.erase(vecLines.begin() + j - m, vecLines.begin() + j + - m);
m++;
}
}
}
4.到了这一步就只剩下轮廓直线集合了,这步就把这个剩余的直线转换为多段线。我使用的PEDit命令,这个命令具体用法,详见另一篇博客:
https://www.cnblogs.com/HelloQLQ/p/12381923.html
这里做的不好的是,在第4步,需要再次选择一下,我本来是直接通过:
int acedSSAdd(
const ads_name ename,
const ads_name sname,
ads_name result
);
但是添加出来的result用PE命令合成多段线始终不成功,所以只能手动选择一次,得到result集合,再合成多段线了。。
objectarx 得到有宽度的多段的轮廓的更多相关文章
- objectarx 按比例分割封闭多段线
测试结果:这个是按0.1,0.1,0.1,0.3,0.4的比例划分的. 插件描述:这个插件主要是选择一个多段线poly,设置poly的close属性为true,在poly任意一侧画一条长线line(l ...
- 实现Myxls设置行高的功能(转)
MyXLS是一个导出Excel的好工具,速度快,体积小,而且也不用担心使用Com生成Excel时资源释放的问题了.但是作者提供的代码没有设置行高 要实现这个效果,首先需要修改两个文件: 1.Row.c ...
- NPOI创建DOCX常用操作【转】
1. 创建文档 XWPFDocument m_Docx = new XWPFDocument();2. 页面设置 //1‘=1440twip=25.4mm=72pt(磅point)=96px(像素 ...
- codevs[1300]文件排版
Description 写电子邮件是有趣的,但不幸的是经常写不好看,主要是因为所有的行不一样长,你的上司想要发排版精美的电子邮件,你的任务是为他编写一个电子邮件排版程序. 完成这个任务最简单的办法是在 ...
- Matlab 如何绘制复杂曲线的包络线
Matlab 如何绘制复杂曲线的包络线 http://jingyan.baidu.com/article/aa6a2c14d36c710d4c19c4a8.html 如果一条曲线(比如声音波形)波动很 ...
- iOS开发之常用资讯类App的分类展示与编辑的完整案例实现(Swift版)
上篇博客我们聊了<资讯类App常用分类控件的封装与实现(CollectionView+Swift3.0)>,今天的这篇博客就在上篇博客的基础上做些东西.做一个完整的资讯类App中的分类展示 ...
- CSS 控制table 滑动及调整列宽等问题总结
一. 通过css控制table y方向上滚动 html中没有滚动条,可以根据overflow属性的scroll来对table显示不完全的内容进行滚动. 只是y方向上滚动,很简单,只要设置div的hei ...
- Android-原笔迹手写的探索与开发
前言 这篇文章主要是关于移动端原笔迹的开发,让平板上的手写效果达到笔迹光滑且有笔锋. 介绍关于原笔迹的算法思路. 项目github地址 算法思路分析 曲线拟合算法 利用曲线拟合算法增加虚拟的点,使得 ...
- Jupyter notebook工具栏隐藏和jupyter notebook主题更改
有趣的事,Python永远不会缺席! 如需转发,请注明出处:小婷儿的python https://www.cnblogs.com/xxtalhr/p/10747200.html 一.问题 Jupyt ...
随机推荐
- Java任务调度框架之分布式调度框架XXL-Job介绍
Java任务调度框架之分布式调度框架XXL-Job介绍及快速入门 调度器使用场景: Java开发中经常会使用到定时任务:比如每月1号凌晨生成上个月的账单.比如每天凌晨1点对上一天的数据进行对账操作 ...
- Gitbook在 Mac 环境上的安装及使用
一.在 Mac 环境上搭建 gitbook #.安装node.js,在node.js官网下载,直接安装稳定版本. https://nodejs.org/en/ #.检测 node.js 是否安装成功 ...
- [CTS2019]珍珠(NTT+生成函数+组合计数+容斥)
这题72分做法挺显然的(也是我VP的分): 对于n,D<=5000的数据,可以记录f[i][j]表示到第i次随机有j个数字未匹配的方案,直接O(nD)的DP转移即可. 对于D<=300的数 ...
- Flume(三) —— 断点续传 与 事务
断点续传 # Name the components on this agent a1.sources = r1 a1.sinks = k1 a1.channels = c1 # Describe / ...
- JavaWeb过滤器(Filter)
参考:https://blog.csdn.net/yuzhiqiang_1993/article/details/81288912 原理: 一般实现流程: 1.新建一个类,实现Filter接口2.实现 ...
- Maven 仓库搜索服务和私服搭建
Maven 仓库搜索服务 使用maven进行日常开发的时候,一个常见问题就是如何寻找需要的依赖,我们可能只知道需要使用类库的项目名称,但是添加maven依赖要求提供确切的maven坐标,这时就可以使用 ...
- 2019-2020-1 20199324《Linux内核原理与分析》第一周作业
1.问题:使用banner输出图形字符为什么都是大写? 2.实验二:基本概念及操作 作业:命令toilet和figlet的使用 使用如下命令安装 $ sudo apt-get update $ sud ...
- 基础篇十:模块介绍(--with-help_random_index_module)
配置语法: 下面开始配置: cd /etc/nginx/conf.d/default.conf
- 吴裕雄--天生自然C语言开发:typedef
#include <stdio.h> #include <string.h> typedef struct Books { ]; ]; ]; int book_id; } Bo ...
- 一个搜索框的小demo
一.实时按照输入的搜索值显示与其匹配的内容,隐藏其它内容 <%@ Page Language="C#" AutoEventWireup="true" Co ...