我用mdl生成的尺寸标注,在三维设计空间是没问题的,但是在剖切的空间内进行标注,发现文字都反了,打散标注元素后发现文字都旋转了180度,这是为什么呢?
您是否选择了后视图?
我理解后视图是三维空间内的吧,我是在剖切后的图纸空间标出现的问题,图纸是二维的应该没有后视图吧
主要是三维空间是正的,图纸空间是反的,字会自动旋转180度
您这个标注元素是生成在哪个Model下边了?生成标注元素时旋转矩阵是怎么设置的?能否上传一下您的相关代码。
bool CSiLinerDimension::_Draw(EditElementHandleR eeh, const DgnModelP pModel) const { int numPoints = NumberPoints(); if (numPoints < 2) return false; std::shared_ptr<CSiLinearDimensionStyle> pStyle = CSiLinearDimensionStyle::DefaultStyle(); DimensionHandler::CreateDimensionElement(eeh, *(pStyle->GetDimData()), DimensionType::SizeArrow, pModel->Is3d(), *pModel); IDimensionEdit* iDimEdit = dynamic_cast<IDimensionEdit*>(&eeh.GetHandler()); std::vector<DPoint3d> pts; pts.reserve(numPoints); for (int i = 0; i < numPoints; ++i) { DPoint3d pt; GetPointAt(pt, i); pts.emplace_back(std::move(pt)); } DVec3d vec1 = pts.back() - pts.front(); vec1.Normalize(); double angle = vec1.AngleTo(DVec3d::UnitX()); if (vec1.y <= 0) { angle = 2 * PI - angle; } RotMatrix rotMat = RotMatrix::FromAxisAndRotationAngle(2, angle); iDimEdit->SetRotationMatrix(eeh, rotMat); for (auto& pt : pts) { iDimEdit->InsertPoint(eeh, &pt, nullptr, *(pStyle->GetDimData())->m_dimStyle, 0); } iDimEdit->SetHeight(eeh, m_height); return true; }
标注是在剖切的图纸二维model生成的,不是在三维设计model生成的。如果在三维设计model生成的话是没问题的。
应该还是您参数设置的不对,你写一个单独的函数,函数其他都不做,就生成一个标注元素,看是否还是这样?