60000198 How can I use new objects and features with the wrapper component.

Article 60000198
Type HowTo
Product Engine
Version 6
Date Added 7/5/2007
Fixed (7/5/2007)
Submitted by Peter Chanios

Summary

The wrapper component is a COM ActiveX that can be used in environments like vd6 and c++6. We have implements .tlb files which can be added in the project's references and can give your application functionalities of the new component. For more information and implementations you can contact us for more details. Exported tlb files : VectorDraw.Serialize.tlbVectorDraw.Render.tlbVectorDraw.Professional.tlbVectorDraw.Geometry.tlbVectorDraw.Actions.tlbVdrawPro5.tlbvdrawi5.tlbvdPropertyGrid.tlbVdProControl.tlb

Solution


The following code samples implement the wrapper component where with the use of a button we add a vdMtext object which is a completely new object that is implemented in our new libraries and was not present in version 5. For this implementation we have imported VectorDraw.Geometry.tlb ,VectorDraw.Professional.tlb and also vdrawi5.tlb

VB6 code sample: C++ code sample:

Private Sub Command1_Click()
'Get the document interface of VectorDraw FrameWork
   Dim doc As VectorDraw_Professional.vdDocument
   Set doc = VDraw1.ActiveDocument.WrapperObject
'Create a new Mtext object with VDF Interfaces
   Dim mtext As VectorDraw_Professional.vdMText
   Set mtext = New VectorDraw_Professional.vdMText

   'typecast the Mtext as vdbaseObject
   Dim baseobj As VectorDraw_Professional.vdBaseObject
   Set baseobj = mtext
   baseobj.SetUnRegisterDocument doc

   'typecast the Mtext as vdPrimary
   Dim primary As VectorDraw_Professional.vdPrimary
   Set primary = mtext
   primary.setDocumentDefaults

   'Create a gPoint object
   Dim pt As VectorDraw_Geometry.gPoint
   Set pt = New VectorDraw_Geometry.gPoint
   pt.SetValue 2, 3, 0

   'set values in some properties of mtext
   mtext.TextString = "VectorDraw Mtext using VDF Interfaces"
   Set mtext.InsertionPoint = pt
   mtext.BoxWidth = 12
   mtext.Height = 1#

   'typecast the Mtext as vdFigure
   Dim fig As VectorDraw_Professional.vdFigure
   Set fig = mtext

   'add mtext in the collection entities table
   doc.ActiveLayOut.entities.AddItem fig

   primary.Update
   fig.Invalidate

   VDraw1.CommandAction.Zoom "e", 0, 0
End Sub

void Cvd6WrapperDlg::OnBnClickedMtext()
{
//Get the document interface of VectorDraw FrameWork
   VectorDraw_Professional::IvdDocumentPtr doc =       m_vdraw.GetActiveDocument().GetWrapperObject();

//Create a new Mtext object with VectorDraw FrameWork Interfaces
   VectorDraw_Professional::IvdMTextPtr    mtext(__uuidof(VectorDraw_Professional::vdMText));

//typecast the Mtext as vdbaseObject
   VectorDraw_Professional::IvdBaseObjectPtr baseobj =    (VectorDraw_Professional::IvdBaseObjectPtr)mtext;
   baseobj->SetUnRegisterDocument(doc);

//typecast the Mtext as vdPrimary
   VectorDraw_Professional::IvdPrimaryPtr primary = (VectorDraw_Professional::IvdPrimaryPtr)mtext;
   primary->setDocumentDefaults();

//Create a gPoint object;
   VectorDraw_Geometry::IgPointPtr pt(__uuidof(VectorDraw_Geometry::gPoint));
pt->SetValue(2,3,0);

//set values in some properties of mtext
   mtext->PutRefInsertionPoint(pt);
   mtext->PutTextString("Vectordraw Mtext using VectorDrawFramework Interfaces");
   mtext->PutBoxWidth(12);
   mtext->PutHeight(1.0);

//typecast the Mtext as vdFigure
   VectorDraw_Professional::IvdFigurePtr figure = (VectorDraw_Professional::IvdFigurePtr)mtext;

//add mtext in the collection entities table
   doc->ActiveLayOut->Entities->AddItem(figure);
   primary->Update();
   figure->Invalidate();
 
m_vdraw.GetCommandAction().Zoom(COleVariant(_T("e")),COleVariant(),COleVariant());
}


Delphi 7 code sample:
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, SHDocVw, AxCtrls, OleCtrls,
VDrawLib5_TLB, VDrawI5_TLB, VectorDraw_Professional_TLB, VectorDraw_Geometry_TLB;



procedure TForm1.Button1Click(Sender: TObject);
var
   mtext : VectorDraw_Professional_TLB.IvdMText;
   pt : VectorDraw_Geometry_TLB.Igpoint;
   doc : VectorDraw_Professional_TLB.IvdDocument;
   primary : VectorDraw_Professional_TLB.IvdPrimary;
   baseobject : VectorDraw_Professional_TLB.IvdBaseObject;

begin
   doc := vdrawpro.ActiveDocument.WrapperObject as VectorDraw_Professional_TLB.IvdDocument;
   pt := VectorDraw_Geometry_TLB.CogPoint.Create();
   pt.SetValue(2,3,0);
   mtext := VectorDraw_Professional_TLB.CovdMText.Create();
   baseobject := mtext as VectorDraw_Professional_TLB.IvdBaseObject;
   baseobject.SetUnRegisterDocument(doc);
   primary:=mtext as VectorDraw_Professional_TLB.IvdPrimary;
   primary.setDocumentDefaults();
   mtext.TextString := 'VectorDraw Mtext using VDF Interfaces';
   mtext.InsertionPoint := pt;
   mtext.BoxWidth := 12;
   mtext.Height := 1;
   doc.ActiveLayOut.entities.AddItem(mtext as VectorDraw_Professional_TLB.IvdFigure);
   vdrawpro.CommandAction.Zoom('E',0,0);
end;

procedure TForm1.Button2Click(Sender: TObject);
var vdGPts : VectorDraw_Geometry_TLB.Igpoints;
  doc : VectorDraw_Professional_TLB.IvdDocument;
  primary : VectorDraw_Professional_TLB.IvdPrimary;
  baseobject : VectorDraw_Professional_TLB.IvdBaseObject;
  vdGPt : VectorDraw_Geometry_TLB.Igpoint;
  GS : VectorDraw_Professional_TLB.IvdGroundSurface;
  I : integer;

begin
  vdraw1.DisplayFrames:=63;
  vdraw1.StatusBar:=true;
  vdraw1.StatusBarMenu:=true;
  vdraw1.EnableAutoGripOn:=true;

  doc := vdraw1.ActiveDocument.WrapperObject as VectorDraw_Professional_TLB.IvdDocument;

  vdGPts := VectorDraw_Geometry_TLB.CogPoints.Create();
  for I:=1 to 8 do // create a ground sourface from 8 points
  begin
    vdGPt := VectorDraw_Geometry_TLB.CogPoint.Create();
    vdGPts.Add(vdGpt);
  end;

  vdGPTs.Item[0].SetValue(2,3,0);
  vdGPTs.Item[1].SetValue(2,5,1);
  vdGPTs.Item[2].SetValue(4,5,1.5);
  vdGPTs.Item[3].SetValue(4,3,1);
  vdGPTs.Item[4].SetValue(7,3,2);
  vdGPTs.Item[5].SetValue(7,5,0.5);
  vdGPTs.Item[6].SetValue(9,3,0.3);
  vdGPTs.Item[7].SetValue(9,5,0.5);

  GS := VectorDraw_Professional_TLB.CovdGroundSurface.Create();
  baseobject := GS as VectorDraw_Professional_TLB.IvdBaseObject;
  baseobject.SetUnRegisterDocument(doc);
  primary:=GS as VectorDraw_Professional_TLB.IvdPrimary;
  primary.setDocumentDefaults();
  GS.Points := vdGPts;
  GS.MeshSize := 0.1;
  GS.DispMode := DisplayMode_Mesh;//DisplayMode_Triangle;
  doc.ActiveLayOut.entities.AddItem(GS as VectorDraw_Professional_TLB.IvdFigure);
  vdraw1.CommandAction.View3D('VISE');
  vdraw1.CommandAction.Zoom('E',0,0);
end;


Send comments on this topic.