admin 发表于 2024-10-9 08:51:56

arx用ads_entmake 创建 LWPOLYLINE

static int createLwPolyLine(double* pts, int npts, double elevation)
    {
      if (pts == NULL || npts == 0)
            return RTERROR;

      resbuf *pEnt = ads_newrb(0);
      pEnt->resval.rstring = _wcsdup(L"LWPOLYLINE"); //strdup
      resbuf* pTail = pEnt;

      pTail = pTail->rbnext = ads_newrb(100);
      pTail->resval.rstring = _wcsdup(L"AcDbEntity");

      pTail = pTail->rbnext = ads_newrb(100);
      pTail->resval.rstring = _wcsdup(L"AcDbPolyline");

      pTail = pTail->rbnext = ads_newrb(8);
      pTail->resval.rstring = _wcsdup(L"0");

      pTail = pTail->rbnext = ads_newrb(90);
      pTail->resval.rlong = npts;

      pTail = pTail->rbnext = ads_newrb(38);
      pTail->resval.rreal = elevation;

      for (int idx = 1; idx < npts; idx += 2)
      {
            pTail = pTail->rbnext = ads_newrb(10);
            pTail->resval.rpoint = pts;
            pTail->resval.rpoint = pts;
            pTail->resval.rpoint = 0.0;
      }

      pTail->rbnext = NULL;//end

      int res = ads_entmake(pEnt);
      ads_relrb(pEnt);
      return res;
    }

    static void ArxTemplate_doit(void)
    {
      double pnts = { 0.0, 0.0, 0.0, 100.0 };
      createLwPolyLine(pnts, 4, 100);
    }
页: [1]
查看完整版本: arx用ads_entmake 创建 LWPOLYLINE