Acad::ErrorStatus AsdkSmiley::dwgInFields(AcDbDwgFiler *filer) { assertWriteEnabled(); AcDbEntity::dwgInFields( filer ); // Read version number double version; filer->readItem( &version ); if ( version > kCurrentVersionNumber ){ ads_printf( "\nNew version of AsdkSmiley object found (version %.1f found, version %.1f supported): upgrade your Smiley.dbx to enable these objects.", version, kCurrentVersionNumber ); return Acad::eMakeMeProxy; } AcGePoint3d center, mouthleftpt, mouthbottompt, mouthrightpt; double radius; filer->readItem( ¢er ); filer->readItem( &radius ); setCenter( center ); setRadius( radius ); filer->readItem( &mnormal ); filer->readItem( &meyesapart ); filer->readItem( &meyesheight ); filer->readItem( &meyesize ); filer->readItem( &mouthleftpt ); filer->readItem( &mouthbottompt ); filer->readItem( &mouthrightpt ); setMouth( mouthleftpt, mouthbottompt, mouthrightpt ); return filer->filerStatus(); }
Acad::ErrorStatus AcLine::transformBy(const AcGeMatrix3d& xform) { assertWriteEnabled(); msp.transformBy(xform); mep.transformBy(xform); return Acad::eOk; }
Acad::ErrorStatus AsdkEmployee::dwgInFields(AcDbDwgFiler* pFiler) { assertWriteEnabled(); Acad::ErrorStatus es; // Call dwgInFields from AcDbEllipse if ((es = AcDbEllipse::dwgInFields(pFiler)) != Acad::eOk) { return es; } // Read version number. Adesk::UInt16 version; pFiler->readItem(&version); if (version > VERSION_ASDKEMPLOYEE) return Acad::eMakeMeProxy; // Read the data members. switch (version) { case (1): pFiler->readItem(&m_lastName); pFiler->readItem(&m_firstName); pFiler->readItem(&m_cube); pFiler->readItem(&m_ID); // TODO: here you can file datamembers not // created by the ObjectARX Add-In. break; } return pFiler->filerStatus(); }
Acad::ErrorStatus TailraceGEDraw::subMoveGripPointsAt( const AcDbIntArray& indices, const AcGeVector3d& offset ) { assertWriteEnabled () ; for( int i = 0; i < indices.length(); i++ ) { int idx = indices.at( i ); if ( idx == 0 ) { m_insertPt += offset; // 插入点偏移 caculPts(); } // if(idx == 1) // { // // 1) 计算x轴的端点坐标 // AcGeVector3d v(AcGeVector3d::kXAxis); // v.rotateBy(m_angle,AcGeVector3d::kZAxis); // v.rotateBy(3.1415926/2,AcGeVector3d::kZAxis); // AcGePoint3d pt = m_insertPt + v*m_lenth; // // // 2) 进行坐标偏移计算 // pt += offset; // // // 坐标相减,得到一个向量,然后得到向量长度 // m_lenth = (pt - m_insertPt).length(); // caculPts(); // } } return Acad::eOk; }
Acad::ErrorStatus AsdkMkrObject::dxfInFields(AcDbDxfFiler* filer) { assertWriteEnabled(); Acad::ErrorStatus es = eOk; resbuf rb; if ((AcDbObject::dxfInFields(filer) != Acad::eOk) || !filer->atSubclassData(/*NOXLATE*/"AsdkMkrObject")) { return filer->filerStatus(); } while ((es == eOk) && ((es = filer->readResBuf(&rb)) == eOk)) { switch (rb.restype) { // TODO: add the cases for your entity case kDxfXCoord: default: filer->pushBackItem(); es = Acad::eEndOfFile; break; } /*switch*/ } /*while*/ if (es != Acad::eEndOfFile) return eInvalidResBuf; // end of dxfInFields return es; }
Acad::ErrorStatus OarxEmployee::moveStretchPointsAt (const AcDbIntArray &indices, const AcGeVector3d &offset) { //----- Make sure the object is open is write mode assertWriteEnabled () ; //----- moveStretchPointsAt == moveGripPointsAt return (moveGripPointsAt (indices, offset)) ; }
Acad::ErrorStatus OarxEmployee::dwgInFields (AcDbDwgFiler *pFiler) { //----- Make sure the object is open is write mode assertWriteEnabled () ; //----- Call parent class implementation for header AcDbEntity::dwgInFields (pFiler) ; //----- Read class version unsigned long version =0 ; pFiler->readUInt32 (&version) ; if ( version != mVersion ) { //----- Be carefull the version number does not match the current class //----- definitionversion. We normally need to process the information //----- differently. Or we return Acad::eMakeMeProxy return (Acad::eMakeMeProxy) ; } //----- Deallocate an previous strings CleanUp () ; //----- Read Employee Datas pFiler->readInt32 (&mID) ; pFiler->readInt32 (&mCubeNumber) ; pFiler->readString (&mFirstName) ; pFiler->readString (&mLastName) ; pFiler->readPoint3d (&mCenter) ; return (pFiler->filerStatus ()) ; }
Acad::ErrorStatus PDEcone::setParameters(const AcGePoint3d &ptStart, const AcGePoint3d &ptEnd, double d1, double d2, const AcGeVector3d &vect, int Precision/* = PRIMARY3D_DEFAULT_PRECISION*/) { assertWriteEnabled(); m_ptStart = ptStart; m_ptEnd = ptEnd; if(m_ptStart.isEqualTo(m_ptEnd)) m_ptEnd=m_ptStart+AcGeVector3d(0,0,1); m_dDiameter1 =fabs(d1) ; if(m_dDiameter1==0) m_dDiameter1=1; m_dDiameter2 =fabs(d2) ; m_vect = vect.normal(); if(Precision > 2) m_dDividPrecision = Precision; else m_dDividPrecision = PRIMARY3D_DEFAULT_PRECISION; CalActParameter(); #ifdef _USEAMODELER_ createBody(); #endif return Acad::eOk; }//added by linlin 20050929
Acad::ErrorStatus AsdkSmiley::transformBy(const AcGeMatrix3d& xform) { assertWriteEnabled(); // Transform the center point and get the translation vector AcGePoint3d oldCenter( center() ), newCenter( center() ); newCenter.transformBy( xform ); AcGeVector3d transVec = newCenter - center(); // Get the equivalent transformation AcGeMatrix3d newXform; newXform.setToTranslation( transVec ); // Only translate the face and mouth - do not transform! mfacecircle.transformBy( newXform ); mmoutharc.transformBy( newXform ); // Get the point at a quadrant, transform it.. AcGePoint3d oldXquad = center() + AcGeVector3d( radius(), 0, 0 ), newXquad( oldXquad ); newXquad.transformBy( xform ); // ... then scale the Smiley accordingly if ( Adesk::kFalse == xform.isEqualTo( AcGeMatrix3d::kIdentity )) scaleRadius( radius() * newCenter.distanceTo( newXquad ) / oldCenter.distanceTo( oldXquad )); return Acad::eOk; }
void AsdkSmiley::setEyeSize(const double s) { assertWriteEnabled(); meyesize = s; recordGraphicsModified(); } // smiley eyes size
//AcDbObject overrides Acad::ErrorStatus EmployeeDetails::dwgInFields (AcDbDwgFiler* filer) { assertWriteEnabled(); Acad::ErrorStatus es; if ((es=AcDbObject::dwgInFields(filer))!=Acad::eOk) return es; long ver; filer->readInt32(&ver); //we won't be able to read the staff if its //version is greater than the one we were compiled with if (ver>EmployeeDetails::version) return Acad::eMakeMeProxy; //deallocate an previous strings cleanUp(); //this is how we read ver1 if (ver==1) { filer->readInt32(&m_cubeNumber); filer->readInt32(&m_ID); filer->readString(&m_strFirstName); filer->readString(&m_strLastName); } //other versions up to the current version should come here //if you want to maintain downward compatibility //these should hold by this time assert(m_strFirstName!=NULL); assert(m_strLastName!=NULL); assert(m_cubeNumber>=0); assert(m_ID>=0); return filer->filerStatus(); }
// Files data in from a DXF file. // Acad::ErrorStatus AsdkOwnerDemo::dxfInFields(AcDbDxfFiler* filer) { assertWriteEnabled(); Acad::ErrorStatus es; if ((es = AcDbObject::dxfInFields(filer)) != Acad::eOk) { return es; } // Check if we're at the right subclass data marker. // if (!filer->atSubclassData("AsdkOwnerDemo")) { return Acad::eBadDxfSequence; } struct resbuf inbuf; while (es == Acad::eOk) { if ((es = filer->readItem(&inbuf)) == Acad::eOk) { if (inbuf.restype == AcDb::kDxfInt16) { mIntval = inbuf.resval.rint; } else if (inbuf.restype == AcDb::kDxfHardOwnershipId) { acdbGetObjectId(mObjId, inbuf.resval.rlname); } } } return filer->filerStatus(); }
void LinkedGE::setSEPoint( const AcGePoint3d& startPt, const AcGePoint3d& endPt ) { assertWriteEnabled(); m_startPt = startPt; m_endPt = endPt; }
Acad::ErrorStatus AsdkBody::subTransformBy(const AcGeMatrix3d& xform) { AcDbDwgFiler *filer; assertWriteEnabled( Adesk::kFalse ); if (NULL != (filer = undoFiler())) { filer->writeAddress(AsdkBody::desc() ); filer->writeItem( (Adesk::Int16)555 ); //filer->writeBytes( &xform, sizeof AcGeMatrix3d ); AcGePoint3d o; AcGeVector3d x, y, z; xform.getCoordSystem( o, x, y, z ); filer->writeItem( o ); filer->writeItem( x ); filer->writeItem( y ); filer->writeItem( z ); } m_3dGeom.transform( *(Transf3d*)&xform ); return Acad::eOk; }
// Sets the value of the integer data member. // Acad::ErrorStatus AsdkOwnerDemo::setIntData(const Adesk::Int16& val) { assertWriteEnabled(); mIntval = val; return Acad::eOk; }
void AsdkSmiley::setNormal(const AcGeVector3d v) { assertWriteEnabled(); mnormal = v; recordGraphicsModified(); } // smiley normal
void AsdkBody::createExtrusionAlongPath( const Body &startProfile, const Body &endProfile, const AcGePoint3d vertices[], PolygonVertexData* vertexData[], int numVertices, bool pathIsClosed, bool bCheckValidity, const AcGePoint3d &scaleTwistFixedPt, double scaleFactor, double twistAngle, const MorphingMap &morphingMap) { assertWriteEnabled(); m_3dGeom = Body::extrusionAlongPath( startProfile, endProfile, (Point3d*)vertices, vertexData, numVertices, pathIsClosed, bCheckValidity, *(Point3d*)&scaleTwistFixedPt, scaleFactor, twistAngle * (kPi/180), morphingMap); if (debugMode()) { m_3dGeom.mergeCoplanarEntities(); if (! m_3dGeom.isValid()) throw eFail; } }
void TTunnel::setInTunnel( const AcDbObjectId& objId ) { assertWriteEnabled(); if( objId.isNull() ) return; if( m_inTunnel == objId ) return; m_inTunnel = objId; }
Acad::ErrorStatus DbValve::dwgInFields (AcDbDwgFiler *pFiler) { assertWriteEnabled () ; //----- Read parent class information first. Acad::ErrorStatus es =AcDbPolyline::dwgInFields (pFiler) ; if ( es != Acad::eOk ) return (es) ; //----- Object version number needs to be read first Adesk::UInt32 version =0 ; if ( (es =pFiler->readUInt32 (&version)) != Acad::eOk ) return (es) ; if ( version > DbValve::kCurrentVersionNumber ) return (Acad::eMakeMeProxy) ; //- Uncomment the 2 following lines if your current object implementation cannot //- support previous version of that object. //if ( version < DbValve::kCurrentVersionNumber ) // return (Acad::eMakeMeProxy) ; //----- Read params //..... if ( (es =pFiler->readPoint2d(&(DbValve::m_center))) != Acad::eOk ) return (es); if ( version >= 2 ) { if ( (es =pFiler->readInt16(&(DbValve::m_index))) != Acad::eOk ) return (es); } return (pFiler->filerStatus ()) ; }
void AsdkSmiley::setMouthBottom(const AcGePoint3d& p) { assertWriteEnabled(); mmoutharc.set( mouthLeft(), p, mouthRight() ); recordGraphicsModified(); } // bottom point of mouth arc (smile)
Acad::ErrorStatus ArxDbgDbEntity::setNormal(const AcGeVector3d& nvec) { if (nvec.isZeroLength()) { ASSERT(0); return Acad::eInvalidInput; } if (nvec != m_zDir) { assertWriteEnabled(); AcGeVector3d txdir, tydir; AcGeVector3d txdiro, tydiro; ArxDbgUtils::getEcsXAxis(nvec, txdir); // get AutoCAD's arbitrary X-Axis for this normal ArxDbgUtils::getEcsXAxis(m_zDir, txdiro); // get AutoCAD's arbitrary X-Axis for this normal tydir = nvec.crossProduct(txdir); tydir.normalize(); tydiro = m_zDir.crossProduct(txdiro); tydiro.normalize(); AcGeMatrix3d mat; mat.setToAlignCoordSys(m_origin, txdiro, tydiro, m_zDir, m_origin, txdir, tydir, nvec); m_xDir.transformBy(mat); m_zDir.transformBy(mat); m_origin.transformBy(mat); } return Acad::eOk; }
Acad::ErrorStatus PDEcone::moveGripPointsAt( const AcDbIntArray& indices, const AcGeVector3d& offset) #endif { assertWriteEnabled(); /* if(indices.length()>1){ m_ptStart.transformBy(offset); m_ptEnd.transformBy(offset); return Acad::eOk; } if(indices[0] ==0 ) m_ptStart.transformBy(offset); else if(indices[0] ==1 ) m_ptEnd.transformBy(offset); else{ AcGePoint3dArray grippoint; getgrippoints(grippoint); grippoint[indices[0]].transformBy(offset); double r; if(indices[0] < 6){ r = grippoint[indices[0]].distanceTo(m_ptStart); m_dDiameter1 = r*2; } else{ r = grippoint[indices[0]].distanceTo(m_ptEnd); m_dDiameter2 = r*2; } }*/ return Acad::eOk; }
void AsdkSmiley::setEyesHeight(const double h) { assertWriteEnabled(); meyesheight = h; recordGraphicsModified(); } // smiley eyes height
void AsdkSmiley::setEyesApart(const double d) { assertWriteEnabled(); meyesapart = d; recordGraphicsModified(); } // smiley eyes apart
void PDSphere::createBody() { assertWriteEnabled(); //#ifdef _OBJECTARX2004_ m_3dGeom = Body::sphere(*(Point3d*)&m_ptCenter, m_dRadius, m_dDividPrecision); //#endif }
void ArcTunnel::pullKeyParamFromReader( DrawParamReader& reader ) { assertWriteEnabled(); LinkedGE::pullKeyParamFromReader( reader ); reader.readPoint( m_thirdPt ); }
Acad::ErrorStatus PDSphere::dwgInFields(AcDbDwgFiler* filer) { assertWriteEnabled(); Acad::ErrorStatus es=Acad::eOk; // Call dwgInFields from father class: PDPrimary3D if((es=PDPrimary3D::dwgInFields(filer))!=Acad::eOk) { return es; } // Read version number. Adesk::UInt16 version; filer->readItem(&version); if (version > VERSION_PDSPHERE) return Acad::eMakeMeProxy; // Read the data members. switch (version) { case (1): filer->readItem(&m_ptCenter); filer->readItem(&m_dRadius); filer->readItem(&m_nprecision); break; } #ifdef _USEAMODELER_ if(m_3dGeom.isNull()) createBody(); #endif return filer->filerStatus(); }
void AsdkBody::createAxisRevolution( const AcGePoint3d vertices[], PolygonVertexData* vertexData[], int numVertices, const AcGeVector3d &normal, const AcGePoint3d &axisStart, const AcGePoint3d &axisEnd, double revolutionAngle, int approx, const AcGePoint3d &fixedPt, double scaleFactor, double twistAngle) { assertWriteEnabled(); m_3dGeom = Body::axisRevolution( (Point3d*)vertices, vertexData, numVertices, *(Vector3d*)&normal, Line3d(axisStart, axisEnd), revolutionAngle * (kPi/180), approx, *(Point3d*)&fixedPt, scaleFactor, twistAngle * (kPi/180)); if (debugMode()) if (! m_3dGeom.isValid()) throw eFail; }
Acad::ErrorStatus DoubleArcTunnelDraw::subMoveGripPointsAt( const AcDbIntArray& indices, const AcGeVector3d& offset ) { assertWriteEnabled () ; for( int i = 0; i < indices.length(); i++ ) { int idx = indices.at( i ); if ( idx == 0 ) { m_startPt += offset; } if ( idx == 1 ) { m_endPt += offset; } // 弧的中点 if ( idx == 2 ) { m_thirdPt += offset; } } return Acad::eOk; }
void AsdkSmiley::setCenter(const AcGePoint3d c) { assertWriteEnabled(); mmoutharc.translateBy( c - center() ); mfacecircle.setCenter( c ); recordGraphicsModified(); } // smiley center