乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 154|回复: 9

能否生成这种线型?

[复制链接]

19

主题

54

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
130
发表于 2005-3-30 13:35:00 | 显示全部楼层 |阅读模式
请各位帮忙,我想生成这样一种线型:此线型的列表信息与line线类似,有起始点和结束点,但它同时要具有多线线型的外观,有上中下三条线,且有封闭的端口。
回复

使用道具 举报

3

主题

97

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
109
发表于 2005-3-30 15:10:00 | 显示全部楼层
用多线线型+扩展数据, 或者直接从AcDbMline派生新类.
回复

使用道具 举报

19

主题

54

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
130
发表于 2005-3-31 14:00:00 | 显示全部楼层
哦,直接从AcDbMline派生新类的想法好像很适合生成这种线型,但是三条线之间的距离如何控制呢?要想通过输入数值来确定线与线之间的偏移距离。请详细说明一下,谢谢!
回复

使用道具 举报

3

主题

97

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
109
发表于 2005-3-31 14:50:00 | 显示全部楼层
线型的具体样式不由AcDbMline直接控制, 是由AcDbMlineStyle生成, 然后加载给AcDbMline实体. 生成所需线型的各种参数(偏移, 端口等等)和mline style对话框参数一样, 只是在ARX里不用对话框用函数控制了. 这些函数的使用都可以参考ARX帮助.
AcDbMline只是没有起始和结束点的数据, 如果要用派生类做, 基本思想还是从AcDbMline派生新类, 继承AcDbMline的所有功能(包括加载用AcDbMlineStyle生成的线型样式)        , 再在新类里加入两个变量存储起始点和结束点(点数据可以直接从CAD获得).
回复

使用道具 举报

19

主题

54

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
130
发表于 2005-4-4 10:08:00 | 显示全部楼层
如果想通过用户的输入获得线与线间的偏移量,那AcDbMlineStyle应该怎样写呢?
在CAD中同一种AcDbMline线型,允许它们有不同的线间偏移量吗?
有AcDbMlineStyle生成的线型的代码样例吗?提供一下吧,我是初学者,有点无从下手的感觉,先谢啦!
回复

使用道具 举报

3

主题

97

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
109
发表于 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 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就可以了.
回复

使用道具 举报

3

主题

97

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
109
发表于 2005-4-5 09:59:00 | 显示全部楼层
注: 此为不检查任何读写错误的懒人版本..
回复

使用道具 举报

19

主题

54

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
130
发表于 2005-4-5 10:41:00 | 显示全部楼层
不好意思,语言未表达清楚。
“在CAD中同一种AcDbMline线型,允许它们有不同的线间偏移量吗?”
译文如下:在同一幅cad图中,绘制两条线型样式名称相同的mline线,第一条线内部子线间的偏移量 可以与 第二条线内部子线间的偏移量不同吗?
回复

使用道具 举报

3

主题

97

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
109
发表于 2005-4-5 14:16:00 | 显示全部楼层
如果线型生成之后不允许修改, 答案是不能. 子线偏移量不是线的属性, 而是线型的属性.
回复

使用道具 举报

19

主题

54

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
130
发表于 2005-4-6 11:32:00 | 显示全部楼层
噢,明白了,谢谢!!!!
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-2-5 08:11 , Processed in 0.213731 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表