精华内容
下载资源
问答
  • 前端JS版本7012.2017.0719.1355,后端DLL文件版本7.7010.1.0,前端JS已去除水印部分代码,后端DWG转VDS部分也已经去除试用版字样。该资源仅供学习参考,若要实际使用请购买正版软件。
  • VectorDraw 使用实例

    2021-03-09 11:33:03
    该实例是在VectroDraw官方实例基础上增加了去试用水印和试用限制的代码。
  • VectorDraw 一个小型Java库,用于以编程方式创建可缩放矢量图形(SVG)图像。 该存储库包含VectorDraw的Java源VectorDraw以及其他一些用Scala编写的代码客户端。 该存储库使用 (Scala的构建工具)。 但是,您不...
  • 无需任何安装,VectorDraw web library (javascript)就可以运行在任何支持canvas标签和Javascript的主流浏览器(Chrome, Firefox, Safari, Opera, Dolphin, Boat等等)中。这意味着可以用DXF,DWG,DGN,VDML等多种...
  • VectorDraw web library (javascript) 试用版 试用版 开发语言: JavaScript 可用平台: JavaScript 当前版本: v7.7 VectorDraw web library (javascript)是一个矢量图形库,它不仅能打开CAD图纸,而且能显示任何...
  • VectorDraw Developer Framework 试用版 试用版 开发语言: .NET/ Activex & COM 可用平台: .NET/ Activex & COM 当前版本: v7.7 VectorDraw (VDF) 是一款构建2D、3D图形的CAD矢量绘图控件。 VectorDraw (VDF) 可...
  • Vectordraw XBlock 安装 在Studio和lms的python环境中安装此模块。 将"vectordraw"添加到Studio的“高级设置"vectordraw"中的“高级模块列表”阵列中,以安装此课程的每门课程。
  • VectorDraw 经典源代码

    2019-01-02 13:22:06
    CAD经典源代码 VectorDraw 6.1.6014 c#编写,
  • VectorDraw web library (javascript)是一个矢量图形库,它不仅能打开CAD图纸,而且能显示任何支持HTML5标准平台上的通用矢量对象,这个是该liibrary的去水印版本,直接替换掉原来的vdWebControl.js 即可,版本为...
  • VectorDraw Crack,完全面向对象图形引擎库  VectorDraw 开发者框架 (VDF)VectorDraw Developer Framework (VDF) 是一个可以轻松创建、管理和打印 2D 和 3D 绘图的组件。VectorDraw 对象公开与最常见的矢量格式和...

    VectorDraw Crack,完全面向对象图形引擎库

      VectorDraw 开发者框架 (VDF)VectorDraw Developer Framework (VDF) 是一个可以轻松创建、管理和打印 2D 和 3D 绘图的组件。VectorDraw 对象公开与最常见的矢量格式和其他 CAD 对象兼容的方法和属性。它支持超过 10 种矢量格式和许多光栅格式。VectorDraw Developer Framework (VDF) 是完全面向对象的,组件是用 .NET C# 代码编写的。还提供了一个 ActiveX 组件。此 ActiveX 为旧开发平台(如 Visual Basic 6.0 (VB 6) 和 Delphi)提供向后兼容性。还包括用于 Compact Framework(CE 库)的 VectorDraw 开发人员。

      VectorDraw Crack Framework (VDF) 是一个图形引擎库,开发人员可以使用它来可视化他们的应用程序。您可以轻松创建、编辑、管理、导出、导入和打印 2D 和 3D 绘图 - 图形文件。VDF 使用的一种格式,名为 VDML(VDCL 与 VDML 相同,但经过压缩)基于 XML,支持自定义对象并且不依赖于组件的版本。该库还支持多种矢量和光栅格式的导入-导出,包括原生 SVG 导出。

      VectorDraw Crack🐧2315702359支持的格式

     

      VectorDraw 支持导入和导出这些矢量文件和光栅格式:.DWG、.DXF、.DGN、.PDF、.WMF、.EMF、.VDML、.VDCL、.BMP、.JPG、.TIFF、.GIF 、.PNG、.SKP、.TGA。

      这些格式也受支持但仅用于导出:.DWF、.SVG、.HPGL

      VDF引擎的基本能力

      VectorDraw Crack二维图纸

      3D 图纸

      VectorDraw Crack文本样式(.SHX、.TTF)

      块、插入和属性

      VectorDraw Crack剪辑部分

      图层

      布局和视口

      视口内的编辑功能

      渲染、隐藏和阴影

     

      VectorDraw Crack对象选择捕捉(结束、中间、中心、最近等......)

      打印、打印预览和多页打印作业

      无限撤消/重做

      材料

      灯

      VectorDraw Crack线型(32 种预定义线型)和自定义线型

      多文本和简单文本对象

      支持 WMF、EMF 格式

      使用 vdMatrix 对象进行真实转换

      图像(BMP、TIFF、GIF、JPG、PNG、TGA)

      VectorDraw Crack线性和角度单位

      超链接和工具提示

      孵化

      VectorDraw Crack从 URL 位置异步打开

      外部参考图

     

      扩展数据 (XProperties)

      3D 轨道

      缩放和平移

      3D 视图

      过滤选择对象

    展开全文
  • VectorDraw Developer Framework(VDF)是一个用于应用程序可视化的图形引擎库。有了VDF提供的功能,您可以轻松地创建、编辑、管理、输出、输入和打印2D和3D图形文件。 VectorDraw web library (javascript)不仅能...

        VectorDraw Developer Framework(VDF)是一个用于应用程序可视化的图形引擎库。有了VDF提供的功能,您可以轻松地创建、编辑、管理、输出、输入和打印2D和3D图形文件。   

        VectorDraw web library (javascript)不仅能打开CAD图纸,而且能显示任何支持HTML5标准平台上的通用矢量对象,如Windows,安卓,iOS和Linux。无需任何安装,VectorDraw web library (javascript)就可以运行在任何支持canvas标签和Javascript的主流浏览器(Chrome, Firefox, Safari, Opera, Dolphin, Boat等等)中。这意味着可以用DXF,DWG,DGN,SKP(Google的Sketchup),VDML等多种格式在任何台式、平板电脑,智能手机和便携式笔记本上展现出你的业务。


    问:

        能否提供复杂自定义对象的入门指南?

    答:

        我们将尝试为您提供有关自定义对象的详细说明以及您应该如何尝试实现此类实现。我们的指南是针对C#中的.NET项目,主要是我们使用的编程语言。

        首先,您必须创建一个包含2个项目的解决方案,就像我们的样本中实现的那样。一个项目将是一个非常简单的控件形式(可滚动,框架无关紧要),最好是vdFramedControl,因为具有属性列表和命令行的vdFramedControl将为您提供一个很好的调试项目。在任何情况下,您为vdFramedControl编写的代码对于vdScrollableControl都是相同的。所以我们有一个带有vdFramedControl的项目和一些用于测试自定义对象的按钮。

        第二个项目将是一个DLL,它将包含您的自定义对象(与我们的示例中的完全相同)。具有该表单的其他项目需要此项目的引用,以便您可以使用自定义对象进行测试。

        完成自定义对象的实现后,可以在主应用程序中引用dll而不会出现问题,您可以使用此解决方案来测试和调试自定义对象。

        现在,在这些初始设置之后,我们开始使用自定义对象。

        首先,您需要为自定义对象提供一些属性,这些属性与它的几何有关,以及如何绘制此对象。再找一个vdFigure对象并定义这样的对象。

    public class vdBox :vdFigure , IvdProxyFigure

        作为vdFigure的vdBox,已经有一个pencolor,一个图层,一个penstyle等,接下来将可以用于绘制对象(稍后将在draw方法中解释)。

        这样的自定义对象需要IvdProxyFigure,为对象添加一个空构造函数,还有一个传递Document的帮助构造函数。您还可以添加一个传递一些基本属性的构造函数,但这可以在我们完成属性后添加。

    /// Empty constructor of the object always required for creating a custom object.
    public vdBox()
    {
    }
    /// Helpfull constructor that also initializes the object with Document's defaults.
    /// The Document that the object will use.public vdBox(vdDocument Doc)
    {
    SetUnRegisterDocument(Doc);
    setDocumentDefaults();
    }

        我们还将为对象添加一些属性:

    • 我们需要一个VertexList(点集合)来保持小矩形的点。

    • 您还需要一个主矩形的中心点(gPoint)。

    • main的MainWidth / MainHeight(双精度值)。

    • 小矩形的LittleWidth / LittleHeight(双值)。

    • 您应该添加所有自定义对象示例中所述的属性,如下所示。

    private gPoint mInsertionPoint = null;
    /// /// The Insertion Point of the vdBox object.
    /// [EditorAttribute(typeof(VectorDraw.Professional.PropertyList.vdPickPointDialog),typeof(System.Drawing.Design.UITypeEditor))]
    [GlobalizedCategory("Geometry")]
    [GlobalizedDisplayName("InsertionPoint")]
    [GlobalizedDescription("Get/Set the Insertion Point of the vdTable object in World Coordinative System.")]
    public gPoint InsertionPoint
    {
    get { if (mInsertionPoint == null)mInsertionPoint = new gPoint(); return mInsertionPoint; }
    set
    {
    if (InsertionPoint.AreEqual(value)) return;
    AddHistory("InsertionPoint", value); //For the Undo/Redo implementation of VectorDraw
    mInsertionPoint.CopyFrom(value);
    }
    }

        Globalized ...在属性列表中用于显示按钮的描述,属性的名称以及它的类别。如果您不打算在应用程序中使用我们的属性列表,则不必添加这些内容。

        现在我们已经完成了属性的设置,接下来需要重写Draw方法。

    public override VectorDraw.Render.vdRender.DrawStatus Draw(VectorDraw.Render.vdRender render)
    {
    vdRender.DrawStatus doDraw = base.Draw(render);
    if (doDraw == vdRender.DrawStatus.Successed)
    {
    //Draw stuff here
    }
    AfterDraw(render);
    return doDraw;
    }

        如果调用base.Draw,那么必须始终调用AfterDraw,小心任何try {} catch语句。

        这些调用基本上会初始化绘制的一些功能,并设置基本颜色用vdFigure的pencolor等绘制,因此,如果我们在draw方法中绘制一条线并且该对象的pencolor为红色,那么该线将为红色。

        您可以使用如下所示的渲染的PushPenStyle方法和PopPenStyle(总是在后面)来更改颜色。

    render.PushPenstyle(BackGroundColor, false);
    render.DrawSolidPolygon(this, mSegments, vdRender.PolygonType.Simple);
    render.PopPenstyle();

        现在需要绘制主矩形,但事先解释一下ECS矩阵,您可以在我们的自定义对象和VDF对象中看到ECSMatrix。在用户坐标系中绘制对象要容易得多,比方说0,0,0然后使用ECSMatrix转换绘制对象。例如,我们将通过将中心点设置为0,0,0绘制主矩形,然后使用ECSMatrix上的InsertionPoint将对象转换到那里。

    double wid = 3.0; //(this Value will Be property among others)
    render.PushMatrix(ECSMatrix);
    gPoints pts = new gPoints();
    pts.Add(new gPoint (-wid,-wid,0.0));
    pts.Add(new gPoint(wid, -wid, 0.0));
    pts.Add(new gPoint(wid, wid, 0.0));
    pts.Add(new gPoint(-wid, wid, 0.0));
    pts.Add(new gPoint (-wid,-wid,0.0));
    render.DrawPLine(this, pts);
    render.PopMatrix();

        这将绘制一个矩形。现在我们覆盖ECSMatrix并设置InsertionPoint。

    public override Matrix ECSMatrix
    {
    get
    {
    if (mEcsMatrix != null) return mEcsMatrix;
    mEcsMatrix = new Matrix();
    mEcsMatrix.TranslateMatrix(InsertionPoint.x, InsertionPoint.y, InsertionPoint.z);
    return mEcsMatrix;
    }
    }

        对于EcsMatrix,您可以添加属性,如ExtrusionVector,Rotation,Scale等查看我们的样品。在我们看到绘制对象之前需要实现的最后一件事是BoundingBox。

    public override Box BoundingBox
    {
    get
    {
    if (mBoundBox.IsEmpty)
    {
    mBoundBox = new Box();
    mBoundBox.AddPoint(new gPoint());
    mBoundBox.AddWidth(3.0); 
    mBoundBox.TransformBy(ECSMatrix);
    }
    return mBoundBox;
    }
    }

        必须根据对象的各种属性计算BoundingBox,它是一个始终包含对象的框。

        现在,在初始编码之后,我们可以将自定义对象添加到模型(文档)的实体中并查看它。转到用于调试的Sample应用程序,在添加所需的引用之后,让我们将此自定义对象添加到Document。

    Add the code to a simple test button :
    vdBox box = new vdBox(vdFramedControl1.BaseControl.ActiveDocument);
    box.InsertionPoint = new gPoint(10, 10, 0);
    vdFramedControl1.BaseControl.ActiveDocument.Model.Entities.AddItem(box);
    vdFramedControl1.BaseControl.ActiveDocument.Redraw(true);

    注意:矩形以10,10绘制,宽度为3.0。

        这个矩形已经可以选择,您可以看到它的属性-framedControl的propertiesList,并且还可以更改它们以查看它们如何与对象交互。

        在我们完成对象的绘制和它的绘制属性之后,我们将不得不实现一些基本的覆盖方法,这些方法是几种vdraw方法所必需的。

        首先,我们添加Serialize / DeSerialize覆盖方法,以便将对象保存在vdml / vdcl中(实现保存了对象的所有属性,可以在我们的示例中看到)。

        每次需要重绘项目时都会调用Update覆盖。在这里,您可以初始化一些与对象绘制有关的私有数据。如果更改对象或任何其他属性的颜色,则将调用此方法。例如,如果您对对象的绘制进行了必要的硬计算(并且需要时间来计算),则可以将结果保存在私有结构中。然后在draw方法中,如果结果的值为null,则仅执行此计算,并将此value = null设置为update方法。这样,如果对象未更改,则除非需要更新对象,否则不会调用计算。如果更改基本属性,则只在应用程序中的自定义对象外调用update。

        移动或缩放对象时调用Transformby覆盖。例如,您可以调用CmdMove命令并选择对象。如果您实现TransformBy,那么您可以通过在此方法中更改它的InsertionPoint来移动您的对象。GetGripPoints是一种方法,您可以在其中添加对象所需的夹点。将对象添加到Document的实体时,将调用OnDocumentSelected override。你可以在这里为对象做初始化的东西。

        克隆对象需要MatchProperties覆盖。例如,当您调用move命令然后创建并绘制克隆对象以便您看到对象移动时,VectorDraw将使用克隆。了解如何使用示例中自定义对象的属性实现此方法。

        在爆炸自定义对象时调用爆炸方法,你应该在这里返回VectorDraw原语像vdRect,vdPolyline,vdCircle等对象。如果要在DWG / DXF文件中导出对象,也会调用此方法,结果将是以这些格式保存。

        如果希望自定义对象在命令中显示Osnaps,则会将getOsnapPoints覆盖用于Osnaps。

        完成上述操作后,您可以将自定义对象添加到文档的实体中,以格式绘制,保存/导出。您可以使用代码添加此对象。

        现在,您必须创建一个命令CreateBox。通过向用户询问简单的点和宽度然后创建对象,可以执行如下的简单命令。

    public static bool CreateBox(vdDocument Doc)
    {
    gPoint cen = new gPoint();
    Doc.Prompt("Insertion Point : ");
    object ret = Doc.ActionUtility.getUserPoint();
    Doc.Prompt(null);
    if (ret == null || !(ret is gPoint)) return false;
    cen = ret as gPoint;
    Doc.Prompt("Width : ");
    ret = Doc.ActionUtility.getUserDist(cen);
    Doc.Prompt(null);
    if (ret == null) return false;
    double Width = (double)ret;
    vdBox box = new vdBox(Doc);
    box.InsertionPoint = cen;
    Doc.Model.Entities.AddItem(box);
    return true;
    }

        并在测试按钮中调用此方法。

    vdBox.CreateBox(vdFramedControl1.BaseControl.ActiveDocument);

        如果您希望用户进行交互并在命令期间实时绘制对象,则可以实现更复杂的操作(例如,如果要在选择框的宽度时查看要绘制的自定义对象) 使用ActionEntityEx。您可以在VectorDrawPolygon命令的CmdPolygon中看到一个很好的示例。

     

    展开全文
  • Vectordraw Developer Framework (VDF) 是,程序员可用于其应用程序的可视化,通过所提供的功能可以创建、编辑、管理、导出和导入以及打印2D和3D图形和图形文件。VDF所采用的一种格式称为VDML(VDCL与VDML格式相同,...
  • VectorDraw Developer Framework(VDF)是一个用于应用程序可视化的图形引擎库。有了VDF提供的功能,您可以轻松地创建、编辑、管理、输出、输入和打印2D和3D图形文件。该库还支持许多矢量和栅格输入和输出格式,包括...

    VectorDraw Developer Framework(VDF)是一个用于应用程序可视化的图形引擎库。有了VDF提供的功能,您可以轻松地创建、编辑、管理、输出、输入和打印2D和3D图形文件。该库还支持许多矢量和栅格输入和输出格式,包括本地PDF和SVG导出。

    【VectorDraw Developer Framework最新版下载可登录慧都网进行免费下载】

    VectorDraw web library (javascript)是一个矢量图形库。VectorDraw web library (javascript)不仅能打开CAD图纸,而且能显示任何支持HTML5标准平台上的通用矢量对象,如Windows,安卓,iOS和Linux。无需任何安装,VectorDraw web library (javascript)就可以运行在任何支持canvas标签和Javascript的主流浏览器(Chrome, Firefox, Safari, Opera, Dolphin, Boat等等)中。

    VectorDraw web library (javascript)最新版下载可登录慧都网进行免费下载

    一. 导出背景色的SVG文件

    问:是否可以导出背景颜色不同于白色的SVG文件?

    答:可以通过一些代码行来指示VDF(VectorDraw Developer Framework)组件在OnDrawBackground事件中使用Palette的背景颜色,例如:

    // the form conatins a vdFramedControl and a Button
     
    bool isOnSVGSave = false; // use this global boolean in the form and make it true just before saving the SVG and then again to false after save is finished
     
    private void button1_Click(object sender, EventArgs e)
    {
        vdDocument doc = vdFramedControl.BaseControl.ActiveDocument;
     
        doc.Open(@"C:\test\simple1.vdml"); // open a test file
        doc.Palette.Background = Color.LightYellow; // change the background color
        doc.Palette.Forground = Color.DarkSlateGray; // and the foreground color
     
    .....
    .....
     
        isOnSVGSave = true; //set this flag to true before saving SVG
        doc.OnDrawBackground += new vdDocument.DrawBackgroundEventHandler(doc_OnDrawBackground); // enable the event
        doc.SaveAs(@"c:\test\svg1.svg"); // save the SVG
        doc.OnDrawBackground -= new vdDocument.DrawBackgroundEventHandler(doc_OnDrawBackground); // disable the event
        isOnSVGSave = false;//set this flag back to false after saving SVG
    }
     
    void doc_OnDrawBackground(object sender, vdRender render, ref bool cancel)
    {
        if (isOnSVGSave && render!=null && render is RenderFormats.SvgRender) // check that is on "save" and render is SvgRender
        {
            cancel = true; // you need to pass this as tru
            render.Clear(vdFramedControl.BaseControl.ActiveDocument.Palette.Background); // clear the render and use the Palette’s Background color!
        }
     

    二. 在非XY平面中创建polyhatch

    问:如何在非X / Y平面中创建polyhatch?

    答:在创建剖面线时,多边形曲线和剖面线应位于X / Y平面中,因此如果在相同但不是X / Y平面中有折线,则需要将它们“带”到X / Y平面,创建聚阴影线,然后让他们回到他们的平面。请看以下代码:

    private void Test()
           {
               vdDocument doc = vdFramedControl.BaseControl.ActiveDocument;
               doc.New();
     
               #region create 2 random polylines
               // we will use two circles in order to get some random points from them to create the polylines.
               vdCircle cir1 = new vdCircle(doc, new gPoint(3, 2), 5);
               vdCircle cir2 = new vdCircle(doc, new gPoint(3, 2), 2);
               Vector vec = new Vector(0.3, 0.7, -0.2); vec.Normalize();
               cir1.ExtrusionVector = vec;
               cir2.ExtrusionVector = vec;
               // 2 circles are created in the same "random" plane
     
               // get some points from these just to "have" two polylines
               gPoints pts1 = cir1.geomMeasure(7); // points of 1st polyline
               gPoints pts2 = cir2.geomMeasure(4); // points of 2nd polyline
               #endregion
     
               Matrix mat = new Matrix(); // this is the matrix of the plane that the circles belong to
               mat.SetToViewDirection(vec, 0.0d);
               Matrix invmat = new Matrix(mat.GetInvertion());
     
               // create the curves for the polyhatch
               vdPolyline pl = new vdPolyline(doc, pts1);
     
               // vector should be perpendicular in the plane where the polyline is and can also calculated using CalculateNormal3P, like:
               Vector vec2 = new Vector();
               Vector.CalculateNormal3P(pl.VertexList[0] as gPoint, pl.VertexList[1] as gPoint, pl.VertexList[2] as gPoint, out vec2);
               // in this case we already have it from the circle, as we set it above.
     
               pl.ExtrusionVector = vec;
               pl.Flag = VdConstPlineFlag.PlFlagCLOSE;
               pl.Transformby(mat); // we need to bring these points to X/Y plane
               pl.Update();
     
               VectorDraw.Professional.vdCollections.vdCurves curves_Outer = new VectorDraw.Professional.vdCollections.vdCurves();
               curves_Outer.AddItem(pl);
     
               pl = new vdPolyline(doc, pts2);
               pl.ExtrusionVector = vec;
               pl.Flag = VdConstPlineFlag.PlFlagCLOSE;
               pl.Transformby(mat); pl.Update(); // we need to bring these points to X/Y plane
                
               VectorDraw.Professional.vdCollections.vdCurves curves_Inside = new VectorDraw.Professional.vdCollections.vdCurves();
               curves_Inside.AddItem(pl);
     
               //'create polyhatch
               vdPolyhatch onehatch = new vdPolyhatch(doc);
               onehatch.PolyCurves.AddItem(curves_Outer);
               onehatch.PolyCurves.AddItem(curves_Inside);
               onehatch.HatchProperties = new VectorDraw.Professional.vdObjects.vdHatchProperties(VectorDraw.Professional.Constants.VdConstFill.VdFillModeSolid);
     
               onehatch.Transformby(invmat); // bring this to the plane where the circles are.
               doc.Model.Entities.AddItem(onehatch);
     
               //just add the circles for display reasons. There is no need to add them
               cir1.PenColor.FromSystemColor(Color.Red);
               cir2.PenColor.FromSystemColor(Color.Red);
               doc.Model.Entities.AddItem(cir1);
               doc.Model.Entities.AddItem(cir2);
     
               doc.CommandAction.Zoom("E", 0, 0);
           }

     

    三. 导出txt文件中的xyz坐标

    问:如何将图形中的折线和折线的x,y,z数据导出到txt文件中?

    答:VDF没有自动化此功能,但很容易从加载到VDF组件的任意图形中导出此txt文件。请参阅以下代码:

    private void button1_Click(object sender, EventArgs e)
    {
        vdDocument doc = vdFramedControl.BaseControl.ActiveDocument;
        doc.New();
        doc.Open(@"c:\test\MyModel Layout_1.0.dxf");
     
        using (StreamWriter writer = new StreamWriter(doc.FileName+".txt")) //export c:\test\MyModel Layout_1.0.dxf.txt file containing the points of lines and polylines only
        {
            foreach (vdFigure item in doc.Model.Entities)
            {
                if (item != null && item is vdLine)
                {
                    writer.WriteLine("vdLine " + (item as vdLine).StartPoint.ToString() + " " + (item as vdLine).EndPoint.ToString());
                }
                if (item != null && item is vdPolyline)
                {
                    writer.Write("vdPolyline ");
                    foreach (Vertex item2 in (item as vdPolyline).VertexList)
                    {
                        writer.Write(item2.AsgPoint().ToString() + " ");
                    }
                    writer.WriteLine(" ");
                }
            }
        }
    }
     
     

    您所需要的只是循环遍历文档中的所有对象(线,折线等)并获取其x,y,z值并使用StreamWriter将它们写入txt文件。

    四. 如何覆盖折线的夹点

    问:我想以不同的方式绘制折线的第一个夹点。我如何才能做到这一点?

    答:以下是使用FigureDrawGrips事件执行此操作的示例:

    ..... // need to have these
    doc.FreezeEntityDrawEvents.Push(false);
    doc.OnFigureDrawGrips += new vdDocument.FigureDrawGripsEventHandler(doc_OnFigureDrawGrips);
    ....
    and
            //overrides the default draw grip
            //draw the first grip of all vdFigures as red circle
            //and the others as rectangle using the default grip color
            void doc_OnFigureDrawGrips(object sender, vdRender render, ref bool cancel)
            {
                vdFigure fig = sender as vdFigure;
                if (fig == null) return;
      
                //calculate the circle points and grip box points relative to grip center.
                double half_viewsize = render.PixelSize * render.GlobalProperties.GripSize * 0.5d;
                gPoint offsetPoint = new gPoint(half_viewsize, half_viewsize);
                Box GripBox = new Box(offsetPoint * -1, offsetPoint);
                gPoints circlepts = Globals.GetArcSamplePoints(16, half_viewsize, 0, Globals.VD_TWOPI);
                Matrix morigin = new Matrix();
      
     
                gPoints pts = fig.GetGripPoints();//points are in world CS
      
                int i = 0;
                foreach (gPoint pt in pts)
                {
                    if (!render.IsSectionVisible(pt)) continue;//check the 3d section clip visibility
                    gPoint ptInView = render.CurrentMatrix.Transform(pt);
                    System.Drawing.Point p = render.View2PixelMatrix.Transform2GDIPoint(ptInView);
                    if (!render.Contains(p)) continue;//check if grip is inside the screen
      
                    //initialize a new offset matrix represents the center of grip in current view CS
                    morigin.IdentityMatrix();
                    morigin.TranslateMatrix(ptInView);
      
     
                    //push to matrix where the grip figure points are reference(see GripBox and circlepts)
                    render.PushToViewMatrix();
                    render.PushMatrix(morigin);
      
                    if (i == 0)//if it is the first grip
                    {
                        render.PushPenstyle(Color.Red, true);
                        render.DrawPLine(sender, circlepts);
                        render.PopPenstyle();
                    }
                    else render.DrawBoundBox(sender, GripBox);
      
                    render.PopMatrix();
                    render.PopMatrix();
      
     
                    //if a rendering procedure was break usually by a user pan / zoom in-out
                    if (render.StatusDraw == vdRender.DrawStatus.Break) break;
                    i++;
                }
                render.IsMessageQueEmpty();//update the render StatusDraw by checking if a mouse action was placed by the user
                cancel = true;//do not call the default VectorDraw grip draw.
            }

     

    五. VDF滚动的鼠标滚轮控制
    问:我想禁用鼠标平移和鼠标滚轮缩放,而不是使用滚轮,我想控制绘图的滚动,水平和垂直。我如何才能做到这一点?

    答:您可以按照以下操作来禁用鼠标中键平移和鼠标滚轮放大/缩小:

    //For the wrapper we have to get the vdDocument object like below.
    VectorDraw.Professional.vdObjects.vdDocument doc = vd.ActiveDocument.WrapperObject as VectorDraw.Professional.vdObjects.vdDocument;
     
    doc.MouseWheelZoomScale = 1.0;              //1.0 means disabled mouse wheel. 0.8(less than 1.0) or 1.2(more than 1.0) values can reverse the mouse wheel functionality.

     

    要禁用平移,您必须使用如下的JobStart事件。

     

    vd.JobStart += new AxVDrawLib5._DVdrawEvents_JobStartEventHandler(vd_JobStart);
     
    void vd_JobStart(object sender, AxVDrawLib5._DVdrawEvents_JobStartEvent e)
    {if (e.jobName == "BaseAction_ActionPan") e.cancel = 1;}

     

    要滚动视图,请使用以下代码:

    ... // these events must be used
               doc.MouseWheelZoomScale = 1.0d; // disable mouse wheel zoom
                
               doc.ActionStart += new vdDocument.ActionStartEventHandler(doc_ActionStart);
               vdFramedControl1.BaseControl.MouseWheel += new MouseEventHandler(BaseControl_MouseWheel);
           ...
     
           void BaseControl_MouseWheel(object sender, MouseEventArgs e)
           {
               if ((e != null) && (e.Delta != 0))
               {
                   vdDocument doc = vdFramedControl1.BaseControl.ActiveDocument;
                   double height = doc.ActiveRender.Height * doc.ActiveRender.PixelSize;
                   double width = doc.ActiveRender.Width * doc.ActiveRender.PixelSize;
                   double stepY = height * (e.Delta / Math.Abs(e.Delta)) / 10.0d;
                   double stepX = width * (-1.0d * e.Delta / Math.Abs(e.Delta)) / 10.0d;
                   if ((Control.ModifierKeys & Keys.Shift) == Keys.Shift)
                   { // if Shift key is pressed scroll horizontally
                       doc.ScrollActiveActionRenderView(stepX, 0.0d, true); // scroll only in dX
                   }
                   else //else scroll vertically
                   {
                       doc.ScrollActiveActionRenderView(0.0d, stepY, true); // scroll only in dY
                   }
               }
           }
     
           void doc_ActionStart(object sender, string actionName, ref bool cancel)
           {
               if (actionName == "BaseAction_ActionPan") cancel = true; // cancel middle mouse button pan
           }

     

    转载于:https://www.cnblogs.com/NB-Juvien/p/9565760.html

    展开全文
  • jsinput-vectordraw 使用JSInput进行矢量绘图练习。 安装 将python_lib.zip , vectordraw.js和vectordraw.css上传到Studio中的“文件”部分。 从Notes_and_Examples目录中选择问题之一,例如2_boxIncline_...
  • VectorDraw Developer Framework(VDF)是一个用于应用程序可视化的图形引擎库。有了VDF提供的功能,您可以轻松地创建、编辑、管理、输出、输入和打印2D和3D图形文件。该库还支持许多矢量和栅格输入和输出格式,包括...

    VectorDraw Developer Framework(VDF)是一个用于应用程序可视化的图形引擎库。有了VDF提供的功能,您可以轻松地创建、编辑、管理、输出、输入和打印2D和3D图形文件。该库还支持许多矢量和栅格输入和输出格式,包括本地PDF和SVG导出。

    VectorDraw Developer Framework最新版下载

    一. 导出背景色的SVG文件

    问:是否可以导出背景颜色不同于白色的SVG文件?

    答:可以通过一些代码行来指示VDF(VectorDraw Developer Framework)组件在OnDrawBackground事件中使用Palette的背景颜色,例如:

    // the form conatins a vdFramedControl and a Button
     
    bool isOnSVGSave = false; // use this global boolean in the form and make it true just before saving the SVG and then again to false after save is finished
     
    private void button1_Click(object sender, EventArgs e)
    {
        vdDocument doc = vdFramedControl.BaseControl.ActiveDocument;
     
        doc.Open(@"C:\test\simple1.vdml"); // open a test file
        doc.Palette.Background = Color.LightYellow; // change the background color
        doc.Palette.Forground = Color.DarkSlateGray; // and the foreground color
     
    .....
    .....
     
        isOnSVGSave = true; //set this flag to true before saving SVG
        doc.OnDrawBackground += new vdDocument.DrawBackgroundEventHandler(doc_OnDrawBackground); // enable the event
        doc.SaveAs(@"c:\test\svg1.svg"); // save the SVG
        doc.OnDrawBackground -= new vdDocument.DrawBackgroundEventHandler(doc_OnDrawBackground); // disable the event
        isOnSVGSave = false;//set this flag back to false after saving SVG
    }
     
    void doc_OnDrawBackground(object sender, vdRender render, ref bool cancel)
    {
        if (isOnSVGSave && render!=null && render is RenderFormats.SvgRender) // check that is on "save" and render is SvgRender
        {
            cancel = true; // you need to pass this as tru
            render.Clear(vdFramedControl.BaseControl.ActiveDocument.Palette.Background); // clear the render and use the Palette’s Background color!
        }

    二. 在非XY平面中创建polyhatch

    问:如何在非X / Y平面中创建polyhatch?

    答:在创建剖面线时,多边形曲线和剖面线应位于X / Y平面中,因此如果在相同但不是X / Y平面中有折线,则需要将它们“带”到X / Y平面,创建聚阴影线,然后让他们回到他们的平面。请看以下代码:

    private void Test()
           {
               vdDocument doc = vdFramedControl.BaseControl.ActiveDocument;
               doc.New();
     
               #region create 2 random polylines
               // we will use two circles in order to get some random points from them to create the polylines.
               vdCircle cir1 = new vdCircle(doc, new gPoint(3, 2), 5);
               vdCircle cir2 = new vdCircle(doc, new gPoint(3, 2), 2);
               Vector vec = new Vector(0.3, 0.7, -0.2); vec.Normalize();
               cir1.ExtrusionVector = vec;
               cir2.ExtrusionVector = vec;
               // 2 circles are created in the same "random" plane
     
               // get some points from these just to "have" two polylines
               gPoints pts1 = cir1.geomMeasure(7); // points of 1st polyline
               gPoints pts2 = cir2.geomMeasure(4); // points of 2nd polyline
               #endregion
     
               Matrix mat = new Matrix(); // this is the matrix of the plane that the circles belong to
               mat.SetToViewDirection(vec, 0.0d);
               Matrix invmat = new Matrix(mat.GetInvertion());
     
               // create the curves for the polyhatch
               vdPolyline pl = new vdPolyline(doc, pts1);
     
               // vector should be perpendicular in the plane where the polyline is and can also calculated using CalculateNormal3P, like:
               Vector vec2 = new Vector();
               Vector.CalculateNormal3P(pl.VertexList[0] as gPoint, pl.VertexList[1] as gPoint, pl.VertexList[2] as gPoint, out vec2);
               // in this case we already have it from the circle, as we set it above.
     
               pl.ExtrusionVector = vec;
               pl.Flag = VdConstPlineFlag.PlFlagCLOSE;
               pl.Transformby(mat); // we need to bring these points to X/Y plane
               pl.Update();
     
               VectorDraw.Professional.vdCollections.vdCurves curves_Outer = new VectorDraw.Professional.vdCollections.vdCurves();
               curves_Outer.AddItem(pl);
     
               pl = new vdPolyline(doc, pts2);
               pl.ExtrusionVector = vec;
               pl.Flag = VdConstPlineFlag.PlFlagCLOSE;
               pl.Transformby(mat); pl.Update(); // we need to bring these points to X/Y plane
                
               VectorDraw.Professional.vdCollections.vdCurves curves_Inside = new VectorDraw.Professional.vdCollections.vdCurves();
               curves_Inside.AddItem(pl);
     
               //'create polyhatch
               vdPolyhatch onehatch = new vdPolyhatch(doc);
               onehatch.PolyCurves.AddItem(curves_Outer);
               onehatch.PolyCurves.AddItem(curves_Inside);
               onehatch.HatchProperties = new VectorDraw.Professional.vdObjects.vdHatchProperties(VectorDraw.Professional.Constants.VdConstFill.VdFillModeSolid);
     
               onehatch.Transformby(invmat); // bring this to the plane where the circles are.
               doc.Model.Entities.AddItem(onehatch);
     
               //just add the circles for display reasons. There is no need to add them
               cir1.PenColor.FromSystemColor(Color.Red);
               cir2.PenColor.FromSystemColor(Color.Red);
               doc.Model.Entities.AddItem(cir1);
               doc.Model.Entities.AddItem(cir2);
     
               doc.CommandAction.Zoom("E", 0, 0);
           }
    

    三. 导出txt文件中的xyz坐标

    问:如何将图形中的折线和折线的x,y,z数据导出到txt文件中?

    答:VDF没有自动化此功能,但很容易从加载到VDF组件的任意图形中导出此txt文件。请参阅以下代码:

    private void button1_Click(object sender, EventArgs e)
    {
        vdDocument doc = vdFramedControl.BaseControl.ActiveDocument;
        doc.New();
        doc.Open(@"c:\test\MyModel Layout_1.0.dxf");
     
        using (StreamWriter writer = new StreamWriter(doc.FileName+".txt")) //export c:\test\MyModel Layout_1.0.dxf.txt file containing the points of lines and polylines only
        {
            foreach (vdFigure item in doc.Model.Entities)
            {
                if (item != null && item is vdLine)
                {
                    writer.WriteLine("vdLine " + (item as vdLine).StartPoint.ToString() + " " + (item as vdLine).EndPoint.ToString());
                }
                if (item != null && item is vdPolyline)
                {
                    writer.Write("vdPolyline ");
                    foreach (Vertex item2 in (item as vdPolyline).VertexList)
                    {
                        writer.Write(item2.AsgPoint().ToString() + " ");
                    }
                    writer.WriteLine(" ");
                }
            }
        }
    }


    您所需要的只是循环遍历文档中的所有对象(线,折线等)并获取其x,y,z值并使用StreamWriter将它们写入txt文件。

    四. 如何覆盖折线的夹点

    问:我想以不同的方式绘制折线的第一个夹点。我如何才能做到这一点?

    答:以下是使用FigureDrawGrips事件执行此操作的示例:

    ..... // need to have these
    doc.FreezeEntityDrawEvents.Push(false);
    doc.OnFigureDrawGrips += new vdDocument.FigureDrawGripsEventHandler(doc_OnFigureDrawGrips);
    ....
    and
            //overrides the default draw grip
            //draw the first grip of all vdFigures as red circle
            //and the others as rectangle using the default grip color
            void doc_OnFigureDrawGrips(object sender, vdRender render, ref bool cancel)
            {
                vdFigure fig = sender as vdFigure;
                if (fig == null) return;
      
                //calculate the circle points and grip box points relative to grip center.
                double half_viewsize = render.PixelSize * render.GlobalProperties.GripSize * 0.5d;
                gPoint offsetPoint = new gPoint(half_viewsize, half_viewsize);
                Box GripBox = new Box(offsetPoint * -1, offsetPoint);
                gPoints circlepts = Globals.GetArcSamplePoints(16, half_viewsize, 0, Globals.VD_TWOPI);
                Matrix morigin = new Matrix();
      
     
                gPoints pts = fig.GetGripPoints();//points are in world CS
      
                int i = 0;
                foreach (gPoint pt in pts)
                {
                    if (!render.IsSectionVisible(pt)) continue;//check the 3d section clip visibility
                    gPoint ptInView = render.CurrentMatrix.Transform(pt);
                    System.Drawing.Point p = render.View2PixelMatrix.Transform2GDIPoint(ptInView);
                    if (!render.Contains(p)) continue;//check if grip is inside the screen
      
                    //initialize a new offset matrix represents the center of grip in current view CS
                    morigin.IdentityMatrix();
                    morigin.TranslateMatrix(ptInView);
      
     
                    //push to matrix where the grip figure points are reference(see GripBox and circlepts)
                    render.PushToViewMatrix();
                    render.PushMatrix(morigin);
      
                    if (i == 0)//if it is the first grip
                    {
                        render.PushPenstyle(Color.Red, true);
                        render.DrawPLine(sender, circlepts);
                        render.PopPenstyle();
                    }
                    else render.DrawBoundBox(sender, GripBox);
      
                    render.PopMatrix();
                    render.PopMatrix();
      
     
                    //if a rendering procedure was break usually by a user pan / zoom in-out
                    if (render.StatusDraw == vdRender.DrawStatus.Break) break;
                    i++;
                }
                render.IsMessageQueEmpty();//update the render StatusDraw by checking if a mouse action was placed by the user
                cancel = true;//do not call the default VectorDraw grip draw.
            }
    

    五. VDF滚动的鼠标滚轮控制
    问:我想禁用鼠标平移和鼠标滚轮缩放,而不是使用滚轮,我想控制绘图的滚动,水平和垂直。我如何才能做到这一点?

    答:您可以按照以下操作来禁用鼠标中键平移和鼠标滚轮放大/缩小:

    //For the wrapper we have to get the vdDocument object like below.
    VectorDraw.Professional.vdObjects.vdDocument doc = vd.ActiveDocument.WrapperObject as VectorDraw.Professional.vdObjects.vdDocument;
     
    doc.MouseWheelZoomScale = 1.0;              //1.0 means disabled mouse wheel. 0.8(less than 1.0) or 1.2(more than 1.0) values can reverse the mouse wheel functionality.
    

     

    要禁用平移,您必须使用如下的JobStart事件。

    vd.JobStart += new AxVDrawLib5._DVdrawEvents_JobStartEventHandler(vd_JobStart);
     
    void vd_JobStart(object sender, AxVDrawLib5._DVdrawEvents_JobStartEvent e)
    {if (e.jobName == "BaseAction_ActionPan") e.cancel = 1;}

    要滚动视图,请使用以下代码:

    ... // these events must be used
               doc.MouseWheelZoomScale = 1.0d; // disable mouse wheel zoom
                
               doc.ActionStart += new vdDocument.ActionStartEventHandler(doc_ActionStart);
               vdFramedControl1.BaseControl.MouseWheel += new MouseEventHandler(BaseControl_MouseWheel);
           ...
     
           void BaseControl_MouseWheel(object sender, MouseEventArgs e)
           {
               if ((e != null) && (e.Delta != 0))
               {
                   vdDocument doc = vdFramedControl1.BaseControl.ActiveDocument;
                   double height = doc.ActiveRender.Height * doc.ActiveRender.PixelSize;
                   double width = doc.ActiveRender.Width * doc.ActiveRender.PixelSize;
                   double stepY = height * (e.Delta / Math.Abs(e.Delta)) / 10.0d;
                   double stepX = width * (-1.0d * e.Delta / Math.Abs(e.Delta)) / 10.0d;
                   if ((Control.ModifierKeys & Keys.Shift) == Keys.Shift)
                   { // if Shift key is pressed scroll horizontally
                       doc.ScrollActiveActionRenderView(stepX, 0.0d, true); // scroll only in dX
                   }
                   else //else scroll vertically
                   {
                       doc.ScrollActiveActionRenderView(0.0d, stepY, true); // scroll only in dY
                   }
               }
           }
     
           void doc_ActionStart(object sender, string actionName, ref bool cancel)
           {
               if (actionName == "BaseAction_ActionPan") cancel = true; // cancel middle mouse button pan
           }
    

     

     

    转载于:https://my.oschina.net/u/3876903/blog/1939079

    展开全文
  • 为了开发类似visio、AutoCAD、Simulink、UML以及组态类软件,需要有矢量绘图引擎的支撑。矢量绘图引擎的功能通常包括: 基本图元的绘制,如:线、矩形框、圆 图形组合 ...VectorDraw Devel...
  • VectorDraw Developer Framework(VDF)是一个用于应用程序可视化的图形引擎库。有了VDF提供的功能,您可以轻松地创建、编辑、管理、输出、输入和打印2D和3D图形文件。该库还支持许多矢量和栅格输入和输出格式,包括...
  • VectorDraw Developer Framework (VDF) is an easy to program SDK component that every developer need to easily create and manage and print 2D and 3D drawings in his applications. Its objects expose ...
  • VectorDraw Developer Framework (VDF) 是一个CAD图形引擎库,程序员可用于其应用程序的可视化。 通过所提供的功能,用户可以很轻松的创建、编辑、管理、导出和导入以及打印2D/3D的图形和图形文件。广泛应用于ERP、...
  • VectorDraw机械制图,VectorDraw图形引擎crack版  特征如下所示:  独有的VectorDraw图形引擎;  访问、更新、创建矢量图形;  支持无穷的分层和视口(viewports);  对任何元素以任意透明度进行材质渲染;  ...
  • 使用vs2017 报错"your 90 days evaluation period has expired,-100" 解决方法:得到的-100错误是因为您在没有管理权限的情况下运行VisualStudio。请在此处查看此文档......
  • VectorDraw Web JS 9.9 Crack

    2021-06-11 10:25:04
    VectorDraw web library (javascript) 在研究了几年在互联网上展示或工作的可能性并拒绝了各种项目后,我们最终得出的结论是,q578867473在 javascript 的帮助下,我们将能够在网络浏览器中展示矢量图形,而不是...
  • VectorDraw File Converter 是一个最终用户应用程序,q578867473它使您能够将最常用的绘图文档(.DWG、.DGN、.SKP 和 .DXF 文件)转换为新的 VectorDraw 格式标准(VDML、VDCL)以及PDF、HP-GL、SVG 和 .DWF 导出...
  • VectorDraw Developer Framework(VDF)是一个用于应用程序可视化的图形引擎库。有了VDF提供的功能,您可以轻松地创建、编辑、管理、输出、输入和打印2D和3D图形文件。 VectorDraw Developer Framework试用...
  • VectorDraw web library javascript Crack,经过几年的研究,可以在Internet上显示或工作并拒绝了各种项目,我们最终得出结论,借助javascript,我们将能够在除Microsoft IE之外的Internet浏览器上通过Web演示矢量...
  • VectorDraw Developer Framework(VDF)是一个用于应用程序可视化的图形引擎库。有了VDF提供的功能,您可以轻松地创建、编辑、管理、输出、输入和打印2D和3D图形文件。该库还支持许多矢量和栅格输入和输出格式,包括...
  • CAD相关控件,可不安装CAD情况下,打开显示CAD图纸
  • VectorDraw Developer Framework(VDF)是一个用于应用程序可视化的图形引擎库。有了VDF提供的功能,您可以轻松地创建、编辑、管理、输出、输入和打印2D和3D图形文件。 VectorDraw Developer Framework试用版下载 ...
  • VectorDraw Developer Framework(VDF)是一个用于应用程序可视化的图形引擎库。有了VDF提供的功能,您可以轻松地创建、编辑、管理、输出、输入和打印2D和3D图形文件。该库还支持许多矢量和栅格输入和输出格式,包括...

空空如也

空空如也

1 2 3 4 5 ... 11
收藏数 213
精华内容 85
关键字:

VectorDraw