.NET

Reply
Valued Contributor
mbujak
Posts: 53
Registered: ‎07-07-2004
Message 1 of 2 (185 Views)

Drawable wrapper?

185 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
DiningPhilosopher
Posts: 370
Registered: ‎05-06-2012
Message 2 of 2 (158 Views)

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() 

You are not logged in.

Log into access your profile, ask and answer questions, share ideas and more. Haven't signed up yet? Register

Announcements
Are you familiar with the Autodesk Expert Elites? The Expert Elite program is made up of customers that help other customers by sharing knowledge and exemplifying an engaging style of collaboration. To learn more, please visit our Expert Elite website.

Need installation help?

Start with some of our most frequented solutions to get help installing your software.

Ask the Community