程序中究竟如何才能设置feature的父子关系续

** http://www.bentleybbs.com/bbs/ ... D1247 _liujun_ **

在上一贴《程序中究竟如何才能设置feature的父子关系》中,根据柳大侠在11楼的解答

今晚测试了一下,确实可以了。
非常感谢柳大侠!帮我解决了一个大难题!

但是还是有一些不尽如人意的地方。因为感觉这个问题挺麻烦的,所以再单独列出来讨论。

一、当将那个ChildFeature写入dgn之后,那个Child是放在当前的激活图层里的。我在BGA里对它定义的一些表现特性(如放置在那个图层、用多大字体等等)只有选中刚刚放置的那些ChildFeature,然后点击那个Reset Feature按钮才会起作用。即,只有Reset一下刚刚放置的ChildFeature,其PBS特性才生效。
二、那些界址点号的对齐方式,并没有一个统一的方式。根据行政界线的不同,有些界址点号需要左上对齐,有些需要右下对齐,不一而足。主要是为了让它不压到线,出图美观。为此,我专门写了一个程序调整它们的对齐方式,可即便如此,仍有一些界址点号的对齐方式需要作业人员进行手工调整(因为有些地方放置的界址点号太密了)。
而为了便于规范作业,需要为放置的界址点号定义一个统一的TextStyle,定义它的字体、填充背景等。可是,假如我在BGA里就为这个界址点号定义一个TextStyle,那么当我需要让界址点号字体根据比例大小调整时,一对这个feature进行Reset,它的对齐方式就统一调成了那个TextStyle定义的对齐方式。
为此,我试过不在BGA里为其定义TextStyle。可是在v8i里,每一个放置的文本都会有一个TextStyle。而每一个TextStyle都会有一个Justifacation,每当我更改这个TextStyle之后点那个Save按钮,当前dgn文件中所有引用该TextStyle的文本都会重新Rewrite!
它们的对齐方式又全部变回TextStyle定义的方式了。
这样,之前作业人员辛辛苦苦调好的对齐方式等于被毁掉了!

v8i中,对于TextStyle的处理方式固然有可取之处(一改TextStyle,所有引用该TextStyle的文本全部Rewrite)。可是,在实际作业中,并不是每一个文本都使用相同的对齐方式啊?也并不是说用了同一个TextStyle的所有文本都需要用同一种对齐方式吧!
如果每一种对齐方式就要设一个不同的TextStyle的话,那对于界址点号,就要建立左上对齐、左中对齐、左下对齐,右上对齐、右中对齐、右下对齐等9种TextStyle。这样,增加数据冗余倒是次要的,关键是给作业人员带来不方便,因为她在更改对齐方式的同时还要修改其TextStyle!

请问,是不是我对TextStyle的理解和使用方式不对?是不是有一个类似于开关的设置,可以让使用同一个TextStyle的文本的对齐方式不随其定义的修改而修改?抑或有什么其它更好的解决方法?
已邀请:

liujun

赞同来自:

本帖最后由 liujun 于 2009-8-7 11:17 编辑

1. 把.ApplyAttributeChanges的调用放到.Write之后呢?
2. Text是可以没有text style的。在BGA中可以把text的textstyle设置为空。右键点击TextStyle项,可以在菜单中插入各种文本属性。

xyhou

赞同来自:

** http://www.bentleybbs.com/bbs/ ... D1285 _liujun_ **


一个text point的feature没有text style是可以的。但是不设置text style,我没办法给一个text point指定字体。
右键点击TextStyle项,插入一个font后,我把它设置为“宋体”“宋体.tiff”都不行,后来万般无奈之下发现宋体在v8i中的编码为1024,以为这样已经解决问题了!可是后来发现不同的机子,同一个字体在v8i中的编码是不一样的,比如在我同事的机子上,宋体的编码为1026!

请问,要怎么才能在BGA里为我的text point准确指定字体为宋体、楷体等(必须要在不同的机子不能变)?

此外,经过这一番摸索,我发现在BGA里定义一个feature,最好不要把text style(在dgn中定义的textstyle)和其本身的TextStyle(在BGA中定义)两个同时使用。请问是不是这样呢?
看了一下v8i中那个地籍模块的例子,它的所有text point类型的feature在BGA中的textstyle都是设置为空。

那么,为了方便的按比例出图,我可以通过在BGA中为我的text point设置比例大小实现,也可以利用v8本身的功能(定义文本样式,并更改模型的比例)实现。
请问,这两种方式采用那一种比较好呢(好像同时采用两种方式一则没必要,二则v8中定义的文本样式经常会莫名其妙的改变)?

xyhou

赞同来自:

** http://www.bentleybbs.com/bbs/ ... D1285 _liujun_ **


"把.ApplyAttributeChanges的调用放到.Write之后呢?"
换过了,还是不行。要手工reset feature
先.ApplyAttributeChanges,再.Write,再.ApplyAttributeChanges也试过了。

要回复问题请先登录注册