Тема: Mline
Каким образом лучше получать длину объекта Mline (AcDbMline)? Он не является наследником AcDbCurve и getDistAtParam там не работает.
(Длину считаем по центральной линии - т.е. расстояние между grips)
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → ObjectARX → Mline
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Каким образом лучше получать длину объекта Mline (AcDbMline)? Он не является наследником AcDbCurve и getDistAtParam там не работает.
(Длину считаем по центральной линии - т.е. расстояние между grips)
Попробуй так:
static void MLINEGetLength(void) { ads_name en; ads_point p; Acad::ErrorStatus es; if (acedEntSel("\nВыберите мультилинию: ",en,p) == RTNORM) { AcDbObjectId eid; acdbGetObjectId(eid,en); AcDbObjectPointer<AcDbMline> pML(eid,AcDb::kForRead); if ((es = pML.openStatus()) == Acad::eOk) { AcGePoint3dArray pts; AcDbIntArray snapModes, geomIds; int nVert = pML->numVertices(); double len = 0; for (int i=0; i < nVert-1; i++) { len += pML->vertexAt(i).distanceTo(pML->vertexAt(i+1)); } acutPrintf("\nMline length = %.8g",len); } else { acutPrintf("\npML.openStatus()=%s",acadErrorStatusText(es)); } } }
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → ObjectARX → Mline
Форум работает на PunBB, при поддержке Informer Technologies, Inc