ISO图,现在的标注都是正方向上的,在ISO视图上显示出来标注线呈ISO角度,视觉效果正确。
如果旋转或者转成dwg格式,原来的正方向标注不会将“正确的”ISO角度视觉效果保留下来,会变成true模式吧。请问如何才能将这个true变成arbitrary并且倾斜的角度(ISO角度)正确保留下来。
试过MyDim.DimensionStyle.Alignment = msdDimAlignmentArbitrary,无用。想想也对,arbitrary至少需要倾斜角度吧。找不到更多的帮助了。有无关于创建或者修改arbitrary标注的MVBA代码?谢谢!
请上传一下您的测试代码。
郭老师 我这是CLR模块 涉及较多 您那边肯定编译不过的。。。。。您那有例子吗
抱歉,节后又休假了两天,今天刚上班。我这里也没有Arbitrary Dimension的例子。不过,我建议你先手工放置一个这样的标注,然后编程提取它的所有属性(而可能有上百个),然后逐个和非Arbitrary的属性去比较,然后就能找到如何去设置这些参数了。
当然,我这里只是一个方法论,需要您花大量的时间研究一下。如果还是不行,我会再花时间去研究这个细节问题的。
好吧 符老师 如果您研究出来 麻烦告诉一下
伟大的符老师 还是是矩阵设置 我通过这个函数GetRotationMatrix获得道画好的标注 发现得到的矩阵不是正交矩阵 我只能推理如何构建出来 并且较为的复杂, 现在问题就是不知道本特利是怎么构建出这个非正交的矩阵了(我自己的可以画出 但构建复杂)。
我刚刚研究出来。这个非正交矩阵就是在控制标注元素的倾斜的。skewFactor是倾斜角度(弧度值)的正切。所以,如下代码设置了正确的这个标注元素矩阵。
RotMatrix dimRMatrix = RotMatrix::FromAxisAndRotationAngle(2, atan2(pt2.y - pt1.y, pt2.x - pt1.x)); double skewFactor = tan(fc_piover4); RotMatrix skewMatrix = RotMatrix::FromColumnVectors(DVec3d::From(1, 0, 0), DVec3d::From(skewFactor, 1, 0), DVec3d::From(0, 0, 1)); dimRMatrix = dimRMatrix * skewMatrix;
生成的效果图如下:
Answer Verified By: Changsong Ling
多谢符老师