- 积分
- 1320
- 明经币
- 个
- 注册时间
- 2005-3-7
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
发表于 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就可以了. |
|