符老师 C#有创建尺寸标注 C++没有呢? 我根据C#的的写C++的尺寸标注
DimensionHandler::CreateDimensionElement(eeh, dimData, arrowtype, is3d, *model); //依据C#赋值点等 没法进行了。 if (NULL != &eeh && eeh.IsValid()) { //InsertPoint 、SetHeight、SetRotationMatrix 都是在IDimensionEdit结构体中 我改怎么得到一个实例 dimP.InsertPoint(eeh,&staPt, NULL, *simStyle, -1); dimP.InsertPoint(eeh,&endPt, NULL, *simStyle, -1); dimP.SetHeight(height); dimP.SetRotationMatrix(rotP); }
有呀。我记得前两天刚在论坛里贴出来一个关联标注的C++代码样例,你先找一下。
难道我搜索的问题? 我没搜到 只有搜到C#的。。
这个社区的搜索功能确实不怎么好用。我再次贴出源代码如下供参考:
class DimensionProperty : public IDimCreateData { private: DimensionStylePtr m_dimstyle; DgnTextStylePtr m_textStyle; Symbology m_symbology; LevelId m_levelId; DirectionFormatterPtr m_directionFormatter; RotMatrix m_rot1; RotMatrix m_rot2; public: DimensionProperty(DimensionStylePtr dimstyle, DgnTextStylePtr textstyle, Symbology symb, LevelId levelId, DirectionFormatterPtr formatter, RotMatrix rot1, RotMatrix rot2) { m_dimstyle = dimstyle; m_textStyle = textstyle; m_symbology = symb; m_levelId = levelId; m_directionFormatter = formatter; m_rot1 = rot1; m_rot2 = rot2; } virtual DimensionStyleCR _GetDimStyle() const { return *m_dimstyle; } virtual DgnTextStyleCR _GetTextStyle() const { return *m_textStyle; } virtual Symbology _GetSymbology() const { return m_symbology; } virtual LevelId _GetLevelID() const { return m_levelId; } virtual DirectionFormatterCR _GetDirFormat() const { return *m_dirFormatter; } virtual int _GetViewNumber() const { return 0; } virtual RotMatrixCR _GetDimRMatrix() const { return m_rot1; } virtual RotMatrixCR _GetViewRMatrix() const { return m_rot2; } virtual bool _GetAnnScaleAllowed() const { return true; } }; void createAssoDim (WCharCP unparsed) { EditElementHandle lineEeh, dimEeh; double g_1mu = ISessionMgr::GetActiveDgnModelP()->GetModelInfoCP()->GetUorPerMeter(); DgnFilePtr pActiveDgnFile = ISessionMgr::GetActiveDgnFile(); DgnModelP pActiveModel = ISessionMgr::GetActiveDgnModelP(); //------ Create a line element DPoint3d pt1 = DPoint3d::From(0, 0, 0); DPoint3d pt2 = DPoint3d::From(10 * g_1mu, 0, 0); DSegment3d seg = DSegment3d::From(pt1, pt2); LineHandler::CreateLineElement(lineEeh, nullptr, seg, true, *ACTIVEMODEL); lineEeh.AddToModel(); //------- Create a empty dim element DimensionStylePtr pDimStyle = DimensionStyle::GetSettings(*pActiveDgnFile); pDimStyle->SetBooleanProp(true, DimStyleProp::DIMSTYLE_PROP_Placement_UseStyleAnnotationScale_BOOLINT); pDimStyle->SetDoubleProp(1, DimStyleProp::DIMSTYLE_PROP_Placement_AnnotationScale_DOUBLE); pDimStyle->SetBooleanProp(true, DimStyleProp::DIMSTYLE_PROP_Text_OverrideHeight_BOOLINT); pDimStyle->SetDistanceProp(0.5 * g_1mu, DimStyleProp::DIMSTYLE_PROP_Text_Height_DISTANCE, pActiveModel); pDimStyle->SetBooleanProp(true, DimStyleProp::DIMSTYLE_PROP_Text_OverrideWidth_BOOLINT); pDimStyle->SetDistanceProp(0.4 * g_1mu, DimStyleProp::DIMSTYLE_PROP_Text_Width_DISTANCE, pActiveModel); pDimStyle->SetBooleanProp(true, DimStyleProp::DIMSTYLE_PROP_General_UseMinLeader_BOOLINT); pDimStyle->SetDoubleProp(0.01, DimStyleProp::DIMSTYLE_PROP_Terminator_MinLeader_DOUBLE); pDimStyle->SetBooleanProp(true, DimStyleProp::DIMSTYLE_PROP_Value_AngleMeasure_BOOLINT); pDimStyle->SetAccuracyProp((byte)AnglePrecision::Use1Place, DimStyleProp::DIMSTYLE_PROP_Value_AnglePrecision_INTEGER); pDimStyle->SetIntegerProp(DIMSTYLE_VALUE_General_Alignment_True, DIMSTYLE_PROP_General_Alignment_INTEGER); DgnTextStylePtr textStyle = DgnTextStyle::GetSettings(*pActiveDgnFile); LevelId lvId = pActiveModel->GetLevelCache().GetLevelByName(L"Default").GetLevelId(); Symbology symb; symb.style = 0; symb.weight = 0; symb.color = 0; DirectionFormatterPtr dirFormatter = DirectionFormatter::Create(*pActiveModel); RotMatrixCR rMatrix1 = RotMatrix::FromIdentity(); RotMatrixCR rMatrix2 = RotMatrix::FromIdentity(); DimensionProperty *createDimdata = new DimensionProperty(pDimStyle, textStyle, symb, lvId, dirFormatter, rMatrix1, rMatrix2); if (SUCCESS != DimensionHandler::CreateDimensionElement(dimEeh, *createDimdata, DimensionType::SizeArrow, true, *pActiveModel)) { return; } //------ Insert Assoc Points AssocPoint assocPt1, assocPt2; AssociativePoint::InitKeypoint(assocPt1, 0, 2, 0, 1); AssociativePoint::SetRoot(assocPt1, lineEeh.GetElementId(), 0); AssociativePoint::InitKeypoint(assocPt2, 1, 2, 0, 1); AssociativePoint::SetRoot(assocPt2, lineEeh.GetElementId(), 0); IDimensionEdit* iDimEdit = dynamic_cast<IDimensionEdit*>(&dimEeh.GetHandler()); iDimEdit->InsertPoint(dimEeh, &pt1, &assocPt1, *pDimStyle, -1); iDimEdit->InsertPoint(dimEeh, &pt2, &assocPt2, *pDimStyle, -1); iDimEdit->SetHeight(dimEeh, g_1mu); iDimEdit->SetRotationMatrix(dimEeh, RotMatrix::FromIdentity()); if (dimEeh.IsValid()) { dimEeh.AddToModel(); } }
Answer Verified By: Andy
符老师 本特利不会学百度 要给钱才能搜索吧
哈哈,那不会的。Bentley还是很有节操的。主要是购买的这个Teligent社区平台的搜索功能不是很给力。