.NET

Reply
Valued Contributor
53 Posts
3 Kudos
Registered: ‎07-07-2004
Post 1 of 2

Drawable wrapper?

210 Views, 1 Replies
01-18-2013 06:58 AM

I have a custom AcGiDrawable entity that I want to wrap in .Net. All this is done and compiles fine but when I try to instance the object I get the message "Cannot create an instance of the abstract class or interface '....'.

 

Any ideas why this would be an issue. I have several custom entities (derived from AcDbEntity and AcDbObject) that aren't a problem, but for this one, problems arise.

 

#pragma once

#include "mgdinterop.h"
#include "..\InForm.Dbx\ReferenceIndicator.h"

using namespace System;
using namespace Autodesk::AutoCAD::DatabaseServices;
using namespace Autodesk::AutoCAD::Runtime;
using namespace Autodesk::AutoCAD::Geometry;
using namespace Autodesk::AutoCAD::GraphicsInterface;
using namespace Autodesk::AutoCAD::GraphicsSystem;
using namespace inform::dbx;

namespace aag = Autodesk::AutoCAD::GraphicsInterface;
namespace gs = Autodesk::AutoCAD::GraphicsSystem;

namespace InForm { namespace Dbx { namespace Net 
{
	[Autodesk::AutoCAD::Runtime::Wrapper("ReferenceIndicator")]
	public ref class ReferenceIndicatorWrapper : aag::Drawable
	{
#pragma region " Constructor "
		public:
			ReferenceIndicatorWrapper(void);
			ReferenceIndicatorWrapper(System::IntPtr ent, bool autoDel);
#pragma endregion

#pragma region " Internal Object "
	private:
		inline inform::dbx::ReferenceIndicator* GetInternalObject()
		{
			return static_cast<inform::dbx::ReferenceIndicator*>(UnmanagedObject.ToPointer());
		}
#pragma endregion

#pragma region " Public Methods "
		public:
			void Initialize(gs::View^ v, gs::Model^ m)
			{
				inform::dbx::ReferenceIndicator* p = GetInternalObject();
				if(p)
				{
					AcGsView* view = static_cast<AcGsView*>(v->UnmanagedObject.ToPointer());
					AcGsModel* model = static_cast<AcGsModel*>(m->UnmanagedObject.ToPointer());

					p->Initialize(view, model);
				}
			}
#pragma endregion
	};
}}}

 

 

#include "stdafx.h"
#include "ReferenceIndicatorWrapper.h"

using namespace InForm::Dbx::Net;

ReferenceIndicatorWrapper::ReferenceIndicatorWrapper(void)
	: aag::Drawable((System::IntPtr)new inform::dbx::ReferenceIndicator(), true)
{
}

ReferenceIndicatorWrapper::ReferenceIndicatorWrapper(System::IntPtr ent, bool autoDel)
	: aag::Drawable(ent, autoDel)
{
}

 

Valued Mentor
370 Posts
175 Kudos
Registered: ‎05-06-2012
Post 2 of 2

Re: Drawable wrapper?

01-20-2013 01:56 AM in reply to: mbujak

Just guessing, but it looks like the managed runtime is trying to create an instance of the base type (Drawable), which is abstract.  I assume you've derived from an AcRxClass* and have implemented AcMgObjectFactory and that you're calling rxinit() 

Post to the Community

Have questions about Autodesk products? Ask the community.

New Post
Announcements
Are you interested in helping shape the future of the Autodesk Community? To participate in this brief usability study, please click here. Your time and input is greatly appreciated!