xfzzmzj 发表于 2005-3-13 14:29:00

[ARX]实体的显示顺序是什么属性

<FONT face=宋体 size=2>实体的显示顺序是什么属性,如何控制实体的显示顺序?<BR><BR>特别对于两个实体高度属性相同时,如何控制显示顺序?</FONT>

王咣生 发表于 2005-3-13 17:49:00

reply

显示顺序和高度有关系吗?


直接用DRAWORDER就可以了吧.

xfzzmzj 发表于 2005-3-15 15:02:00

那我问你:DRAWORDER 是如何实现这个功能的?


是不是改变AcDbBlockTableRecord 中的顺序

pandoram 发表于 2005-3-15 16:35:00

DrawOrder跟ARX无关, 是AutoCAD的命令呀, 用来指定一张图的显示被刷新里选定实体的显示顺序. BlockTableRecord是用指针表连在一起的, 只要换指针顺序就可以了, 这没什么特别繁琐的.


如果楼主的意思是要在arx中创建实体然后控制其在AutoCAD图窗中的显示顺序, 那也很好办, 因为ARX创建的实体不加入AutoCAD数据库是不会显示的, 所以只要调整诸如appendAcDbEntity之类命令的顺序就可以了.


不过实体一旦加入AutoCAD的数据库, 就只能靠DrawOrder了.

xfzzmzj 发表于 2005-3-16 17:05:00

我就是想知道 实体加入到AutoCAD的数据库之后,如何改变实体的显示顺序? <BR>另外与之相关的问题是:<BR>1,使用DrawOrder命令改变实体的显示顺序,到底是通过修改了实体的什么属性来实现的?<BR>2,如果两个实体的高度属性不相同,实体的显示顺序按高度属性来显示(高度大的显示在上面,高度小的显示在下面)。<BR>如果个实体的高度属性相同,如何控制显示顺序?<BR>3,例如我想把所有的文字(AcDbText,AcDbMtext) 放到其他实体的上面?如何用程序实现?

王咣生 发表于 2005-3-17 00:04:00

reply

显示和高度没有关系,


AutoCAD系统的Regen重生成全图,人家总要有个规则吧,以什么顺序生成,Draworder可以选择实体显示的顺序啊,比如一个实体显示在最前或是最后.

xfzzmzj 发表于 2005-3-17 08:55:00

我就是想知道 Regen重生成全图 时控制实体显示顺序的规则,Draworder改变实体显示的顺序时到底是改变了这个规则的什么属性?


这个规则到底是什么东西,难道 objectarx 不能操作这个规则吗?

pandoram 发表于 2005-3-17 10:07:00

xfzzmzj发表于2005-3-17 8:55:00static/image/common/back.gif我就是想知道 Regen重生成全图 时控制实体显示顺序的规则,Draworder改变实体显示的顺序时到底是改变了这个规则的什么属性?


<BR>..汗..DrawOrder改变的不是 什么 属性..


楼主应该明白每一个block table record代表一个实体, 绘画顺序就是把block table所有的record从头到尾加载一遍. 这些record是用指针表(linked list)连在一起的, 就是AutoCAD保存一套内部指针指示record的前后顺序(标准顺序是按照添加实体的顺序). 当用户发出draworder指令时, AutoCAD就调整指针..


比如说, 原来一号指针指向一个圆, 二号指针指向一个椭圆, 那么显示顺序就是圆先椭圆后; 现在用户用draworder指定椭圆要比圆先显示, AutoCAD就把一号指针指向椭圆, 二号指针指向圆..这样而已..


这些指针和指针变换是AutoCAD内部处理的, 用什么工具都不能直接操作, 除非能搞到AutoCAD的源码..


不管是ObjectARX还是其他的二次开发, 都只能在AutoCAD允许的范围之内..

xfzzmzj 发表于 2005-3-18 09:53:00

听了楼上仁兄的话,


感到我们这些二次开发的真是可怜呀,只能在允许的范围之内...


另外,


我试出一种方法,可以改变实体的显示顺序:


就是修改实体的任一种属性,(可以重新设置原来相同的属性)


这时,实体的显示顺序提前,只能提前,不能到下面
页: [1]
查看完整版本: [ARX]实体的显示顺序是什么属性