明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2247|回复: 9

能否生成这种线型?

[复制链接]
发表于 2005-3-30 13:35:00 | 显示全部楼层 |阅读模式
请各位帮忙,我想生成这样一种线型:此线型的列表信息与line线类似,有起始点和结束点,但它同时要具有多线线型的外观,有上中下三条线,且有封闭的端口。
发表于 2005-3-30 15:10:00 | 显示全部楼层
用多线线型+扩展数据, 或者直接从AcDbMline派生新类.
 楼主| 发表于 2005-3-31 14:00:00 | 显示全部楼层
哦,直接从AcDbMline派生新类的想法好像很适合生成这种线型,但是三条线之间的距离如何控制呢?要想通过输入数值来确定线与线之间的偏移距离。请详细说明一下,谢谢!
发表于 2005-3-31 14:50:00 | 显示全部楼层
线型的具体样式不由AcDbMline直接控制, 是由AcDbMlineStyle生成, 然后加载给AcDbMline实体. 生成所需线型的各种参数(偏移, 端口等等)和mline style对话框参数一样, 只是在ARX里不用对话框用函数控制了. 这些函数的使用都可以参考ARX帮助.


AcDbMline只是没有起始和结束点的数据, 如果要用派生类做, 基本思想还是从AcDbMline派生新类, 继承AcDbMline的所有功能(包括加载用AcDbMlineStyle生成的线型样式)        , 再在新类里加入两个变量存储起始点和结束点(点数据可以直接从CAD获得).
 楼主| 发表于 2005-4-4 10:08:00 | 显示全部楼层
如果想通过用户的输入获得线与线间的偏移量,那AcDbMlineStyle应该怎样写呢?


在CAD中同一种AcDbMline线型,允许它们有不同的线间偏移量吗?


有AcDbMlineStyle生成的线型的代码样例吗?提供一下吧,我是初学者,有点无从下手的感觉,先谢啦!
发表于 2005-4-5 09:57:00 | 显示全部楼层
> 在CAD中同一种AcDbMline线型,允许它们有不同的线间偏移量吗? 没有看懂..'它们'是谁们啊.. 一个线型里的几条线之间的偏移量的话, 当然可以不一样啊.. 用户输入是另外一回事, 输入值用一个变量存起来再给AcDbMlingStyle用.. 还是干脆自己写一个样版得了.. void command()
{
AcDbDatabase *pCurDb; AcDbDictionary *pMDict;
AcDbObjectId dMstyleId; // 多线线型字典 AcDbLinetypeTable *pLTtable;
AcDbObjectId dLinetypeId; // 线样表 AcCmColor cMlingColor; // CAD颜色 AcDbMlineStyle *pMStyle = new AcDbMlineStyle;
int lineIndex = 0;
double offset; // 新线型 pCurDb = acdbHostApplicationServices()->workingDatabase(); pCurDb->getLinetypeTable(pLTtable, AcDb::kForRead);
pLTtable->getAt("CONTINUOUS", dLinetypeId);
pLTtable->close();
// 新线型中的线将使用的线样式. 这里是从数据库本身的线样表读取, 可以获得系统已经加载的任意样式. 也可以自己制作. cMlineColor.setColorIndex(256);
// CAD的颜色是一种结构, 用0-256的数字表示CAD内部承认的颜色. 256表示ByLayer颜色. for (int i = 0; i < 3; i++)
{
acedGetReal("\nInput offset for element: ", &offset); // 用户输入偏移量
pMStyle->addElement(lineIndex, offset, cMlineColor, dLinetypeId);
// 将一条线加入多线样式
} pMStyle->setStartRoundCap(TRUE);
pMStyle->setEndRoundCap(TRUE);
pMStyle->setStartSquareCap(FALSE);
pMStyle->setEndSquareCap(FALSE); // 定义两头圆端口, 不使用方端口
pMStyle->setName("NEW");
pMStyle->setDescription ("new multi line style created by ARX); pCurDb->getMLStyleDictionary(pMDict, AcDb::kForWrite);
pMDict->setAt("NEW", pMStyle, dMstyleId);
// 将新线型加入线型字典, CAD中才能用Format->Mline Style看到已加载线型列表下出现NEW项目 pMStyle->close();
pMDict->close();
} 如果是做Mline实体, 新做的线型生成后加载给实体, 然后把Mline实体加入block table就可以了.
发表于 2005-4-5 09:59:00 | 显示全部楼层
注: 此为不检查任何读写错误的懒人版本..
 楼主| 发表于 2005-4-5 10:41:00 | 显示全部楼层
不好意思,语言未表达清楚。


“在CAD中同一种AcDbMline线型,允许它们有不同的线间偏移量吗?”


译文如下:在同一幅cad图中,绘制两条线型样式名称相同的mline线,第一条线内部子线间的偏移量 可以与 第二条线内部子线间的偏移量不同吗?
发表于 2005-4-5 14:16:00 | 显示全部楼层
如果线型生成之后不允许修改, 答案是不能. 子线偏移量不是线的属性, 而是线型的属性.
 楼主| 发表于 2005-4-6 11:32:00 | 显示全部楼层
噢,明白了,谢谢!!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-26 08:47 , Processed in 0.179447 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表