Тема: Izmenit koordinati vertexsov v pollilinii

Privet
MOzet kto pomozet, mne nada sdelat kopiju liniju i izmenit vse koordinati vertexsov
Spasibo
Ps:Izvinite cto pisu ne ruskimi bukvami:(

Re: Izmenit koordinati vertexsov v pollilinii

По поводу русских букв есть специальный тэг [rus]text na latince[/rus] который отобразится: техт на латинце
По поводу самого вопроса - уточни:
1) какая именно полилиния (AcDbPolyline, AcDb2dPolyline, AcDb3dpolyline)
2) как именно нужно изменить все вершины полилинии.

Re: Izmenit koordinati vertexsov v pollilinii

mne nuzni vse AcDbPolyline, AcDb2dPolyline, AcDb3dpolyline, no ocen blagodaren i za adin pirmer, da ti prav nado izmenit vse versini

Re: Izmenit koordinati vertexsov v pollilinii

> Darius
1) Сначала воспользуйся поиском: https://www.caduser.ru/forum/search.htm … DbPolyline
2) Если ты не уточнишь постановку задачи - примера не будет! Известно ли что нужно сделать с вершинами (т.е. куда именно их перенести)? Сохраняется ли количество вершин или какие-то нужно удалить, а какие-то добавить? Есть ли дуговые сегменты у полилинии? Слишком много неизвестных, чтобы начинать писать программу...

Re: Izmenit koordinati vertexsov v pollilinii

moja zadaca tokaja, ia biru AcDb3dpolyline i ia dolzen tolko izmenit vse koordinati versin , neudalit i ne domavit tolko vzial versinu na primer x=100 y=100 ia izmeniaju x=x+b i y = y+b i tak so vsemi versinami,eto ne prosto ofset potomu cto b mozet izminiatsa, no poscetaneja eto ne problema mne neudajotsa samo izmenenija koordinat versin, mozet kto nebut zdes delaet cto nebud i pod Civil 3D, eta zadaca imeno dlia nego
spasibo vsem

Re: Izmenit koordinati vertexsov v pollilinii

> Darius

//
// Функция для переноса указанной вершины 3D-полилинии в новую точку
//
static void Move3DVertex(void)
{
  ads_point p; ads_name  entPoly;
  if (acedEntSel("\nВыберите 3D-полилинию: ", entPoly, p) != RTNORM)  return;
  AcDbObjectId pObjId;
  if (acdbGetObjectId(pObjId,entPoly) != Acad::eOk) return;
  AcDbObjectPointer<AcDb3dPolyline> poly3d(pObjId,AcDb::kForRead);
  if (poly3d.openStatus() != Acad::eOk) return;
  int nVertex = 0, iVertex = 1;
  AcDbObjectIterator *pVertIter= poly3d->vertexIterator();
  if (!pVertIter) return;
  AcDbObjectIdArray vts;
  for (pVertIter->start();!pVertIter->done();pVertIter->step()) {
    nVertex++; // Подсчитываем количество вершин
    vts.append(pVertIter->objectId()); // И формируем массив AcDbObjectId для вершин
  }
  delete pVertIter;
  char buf[256]; sprintf(buf,"\nУкажите номер перемещаемой вершины (1-%d) <1>: ",nVertex);
  if (acedGetInt(buf,&iVertex) == RTCAN) return;
  if (iVertex < 1 || iVertex > nVertex) return;
  AcDbObjectPointer<AcDb3dPolylineVertex> pVert3d(vts[iVertex-1],AcDb::kForWrite);
  if (pVert3d.openStatus() != Acad::eOk) return;
  AcGePoint3d newPos = pVert3d->position();
  acdbWcs2Ucs(asDblArray(newPos),asDblArray(newPos),0);
  if (acedGetPoint(asDblArray(newPos),"\nУкажите новое положение вершины: ",asDblArray(newPos)) != RTNORM)
    return;
  acdbUcs2Wcs(asDblArray(newPos),asDblArray(newPos),0);
  pVert3d->setPosition(newPos); // Перемещаем вершину
}

Re: Izmenit koordinati vertexsov v pollilinii

Ogromnoje spasibo :)

Re: Izmenit koordinati vertexsov v pollilinii

> Darius
:) С этим сюда: https://www.caduser.ru/forum/topic20709.html

Re: Izmenit koordinati vertexsov v pollilinii

Ia probival zdelat toze samoje dlia 2D no ne kak nepalucaetca mozet mozes pomoc
Sbasibo