Пример #1
0
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( &center );
    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();
}
Пример #2
0
Acad::ErrorStatus AcLine::transformBy(const AcGeMatrix3d& xform)
{
	assertWriteEnabled();
	msp.transformBy(xform);
	mep.transformBy(xform);
	return Acad::eOk;
}
Пример #3
0
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();
}
Пример #4
0
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;
}
Пример #5
0
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;
}
Пример #6
0
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)) ;
}
Пример #7
0
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 ()) ;
}
Пример #8
0
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
Пример #9
0
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;
}
Пример #10
0
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();
}
Пример #12
0
// 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();
}
Пример #13
0
void LinkedGE::setSEPoint( const AcGePoint3d& startPt, const AcGePoint3d& endPt )
{
    assertWriteEnabled();

    m_startPt = startPt;
    m_endPt = endPt;
}
Пример #14
0
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;
}
Пример #15
0
// Sets the value of the integer data member.
//
Acad::ErrorStatus
AsdkOwnerDemo::setIntData(const Adesk::Int16& val)
{
    assertWriteEnabled();
    mIntval = val;
    return Acad::eOk;
}
Пример #16
0
void
AsdkSmiley::setNormal(const AcGeVector3d v)
{
    assertWriteEnabled();
    mnormal = v;
    recordGraphicsModified();
} // smiley normal
Пример #17
0
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;
    }
}
Пример #18
0
void TTunnel::setInTunnel( const AcDbObjectId& objId )
{
    assertWriteEnabled();
    if( objId.isNull() ) return;
    if( m_inTunnel == objId ) return;
    m_inTunnel = objId;
}
Пример #19
0
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 ()) ;
}
Пример #20
0
void
AsdkSmiley::setMouthBottom(const AcGePoint3d& p)       
{
    assertWriteEnabled();
    mmoutharc.set( mouthLeft(), p, mouthRight() );
    recordGraphicsModified();
} // bottom point of mouth arc (smile)
Пример #21
0
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;
}
Пример #22
0
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;
}
Пример #23
0
void
AsdkSmiley::setEyesHeight(const double h)       
{
    assertWriteEnabled();
    meyesheight = h;
    recordGraphicsModified();
} // smiley eyes height
Пример #24
0
void
AsdkSmiley::setEyesApart(const double d)       
{
    assertWriteEnabled();
    meyesapart = d;
    recordGraphicsModified();
} // smiley eyes apart
Пример #25
0
void PDSphere::createBody()
{
	assertWriteEnabled();
	//#ifdef _OBJECTARX2004_
	m_3dGeom = Body::sphere(*(Point3d*)&m_ptCenter, m_dRadius, m_dDividPrecision);
	//#endif
}
Пример #26
0
void ArcTunnel::pullKeyParamFromReader( DrawParamReader& reader )
{
    assertWriteEnabled();

    LinkedGE::pullKeyParamFromReader( reader );
    reader.readPoint( m_thirdPt );
}
Пример #27
0
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();
}
Пример #28
0
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;
}
Пример #29
0
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;
}
Пример #30
0
void
AsdkSmiley::setCenter(const AcGePoint3d c) 
{
    assertWriteEnabled();
    mmoutharc.translateBy( c - center() );
    mfacecircle.setCenter( c );
    recordGraphicsModified();
} // smiley center