新手入门必看:VectorDraw 常见问题整理大全(十一)

本教程整理了VectorDraw 最常见问题,教程整理的很齐全,非常适合新手学习,希望对大家有一定的帮助!

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)最新版下载

一. 在命令(或操作)处于活动状态时显示实体的工具提示

问:我想在命令(或动作)处于活动状态时显示光标下的实体工具提示。我怎样才能做到这一点 /p>

答:默认情况下,在GetUserPoint等操作或活动命令期间无法显示工具提示。这也是着名的CAD应用程序的默认行为,如果将其添加到VDF默认行为,则可能会出现两个问题。

  • 隐藏工具提示区域下方的有用信息(端点,快照等),
  • 作为Osnaps减慢性能,除了绘图数据库搜索必须在工具提示窗口内绘制的文本之外,还必须计算交叉点蚀刻。

为此,我们无法在组件中添加此行为。如果您愿意,可以使用ActiveDocument.ActionLayout.GetEntifromPoint(使用布尔值更快的响应)或GetTooltipFigure,并获取光标下方图形的工具提示文本,并将其设置为文档的ToolTipText属性。就像是:

        private void Form1_Load(object sender, EventArgs e)        {            vdFramedControl.BaseControl.ActiveDocument.EnableToolTips = true;            vdFramedControl.BaseControl.MouseMove += new MouseEventHandler(BaseControl_MouseMove);        }        void BaseControl_MouseMove(object sender, MouseEventArgs e)        {            bool allobjectsAresearched = false;            vdFigure fig = vdFramedControl.BaseControl.ActiveDocument.ActionLayout.GetToolTipFigure(e.Location,vdFramedControl.BaseControl.ActiveDocument.ActiveActionRender.GlobalProperties.PickSize,true,out allobjectsAresearched);            vdFramedControl.BaseControl.ActiveDocument.ToolTipText = "";            if(fig == null) return;            vdFramedControl.BaseControl.ActiveDocument.ToolTipText = fig.ToolTip;        } 

二. 在垂直于线的平面中的线起点和终点创建2个圆

问:如何在垂直于线的平面中的线起点和终点创建2个圆/p>

答:试试如下代码:

private void button3_Click(object sender, EventArgs e){ //create a line  VectorDraw.Professional.vdFigures.vdLine line = new VectorDraw.Professional.vdFigures.vdLine();  line.SetUnRegisterDocument(vdFramedControl.BaseControl.ActiveDocument);  line.setDocumentDefaults();  line.StartPoint = new VectorDraw.Geometry.gPoint(2, 3, 4);  line.EndPoint = new VectorDraw.Geometry.gPoint(7, 8, 2);  line.PenColor.SystemColor = Color.Red;  line.PenWidth = .1;  vdFramedControl.BaseControl.ActiveDocument.ActiveLayOut.Entities.AddItem(line); //create a circle at the StartPoin of the previous line  VectorDraw.Professional.vdFigures.vdCircle circle_SP = new VectorDraw.Professional.vdFigures.vdCircle();  circle_SP.SetUnRegisterDocument(vdFramedControl.BaseControl.ActiveDocument);  circle_SP.setDocumentDefaults();  circle_SP.Center = new VectorDraw.Geometry.gPoint(line.StartPoint);  circle_SP.Radius = (double)1.0;//Set the circle's Extrusion vector to have the direction StartPoint ---> EndPoint  circle_SP.ExtrusionVector = new VectorDraw.Geometry.Vector(new VectorDraw.Geometry.gPoint(line.StartPoint), new VectorDraw.Geometry.gPoint(line.EndPoint));  vdFramedControl.BaseControl.ActiveDocument.ActiveLayOut.Entities.AddItem(circle_SP); //create a circle at the EndPoint of the previous line  VectorDraw.Professional.vdFigures.vdCircle circle_EP = new VectorDraw.Professional.vdFigures.vdCircle();  circle_EP.SetUnRegisterDocument(vdFramedControl.BaseControl.ActiveDocument);  circle_EP.setDocumentDefaults();  circle_EP.Center = new VectorDraw.Geometry.gPoint(line.EndPoint);  circle_EP.Radius = (double)1.0;//Set the circle's Extrusion vector to have the direction EndPoint ---> StartPoint  circle_EP.ExtrusionVector = new VectorDraw.Geometry.Vector(new VectorDraw.Geometry.gPoint(line.EndPoint), new VectorDraw.Geometry.gPoint(line.StartPoint));  vdFramedControl.BaseControl.ActiveDocument.ActiveLayOut.Entities.AddItem(circle_EP);   vdFramedControl.BaseControl.ActiveDocument.CommandAction.Zoom("E", null, null);  vdFramedControl.BaseControl.ActiveDocument.CommandAction.Zoom("S", (double)0.8, null);  MessageBox.Show("Circles with the right extrusion VectorDraw created. Adding some thickness to the circles just to show the results");  circle_SP.Thickness = 0.8;  circle_EP.Thickness = 0.8;  vdFramedControl.BaseControl.ActiveDocument.Redraw(false);}

三. 显示框架控件,如Scrollable或类似vdBase控件

问:我如何使用vdFramed控件但显示它像vdScrollable控件或类似vdBase控件/p>

答:您可以使用以下代码:

Private Sub btn_ShowAsFramed_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ShowAsFramed.Click    '//Show PropertyGrid and Status Bar    VdFramedControl1.SetLayoutStyle(vdControls.vdFramedControl.LayoutStyle.CommandLine, True)    VdFramedControl1.SetLayoutStyle(vdControls.vdFramedControl.LayoutStyle.PropertyGrid, True)    VdFramedControl1.SetLayoutStyle(vdControls.vdFramedControl.LayoutStyle.StatusBar, True)    VdFramedControl1.SetLayoutStyle(vdControls.vdFramedControl.LayoutStyle.LayoutTab, True)    '//Show scrollbars    VdFramedControl1.SetLayoutStyle(vdControls.vdFramedControl.LayoutStyle.HorizodalScroll, True)    VdFramedControl1.SetLayoutStyle(vdControls.vdFramedControl.LayoutStyle.VericalScroll, True)    '//Show the Layout Tab    VdFramedControl1.ScrollableControl.SetShowLayoutTab(True)    '//if you set the vdFramedControl1.SetLayoutStyle(vdControls.vdFramedControl.LayoutStyle.StatusBar ,true)    '// then you show some "features" like :    VdFramedControl1.SetStatusBarOption(vdControls.vdFramedControl.StatusBarOptions.ProgressBar, True)    VdFramedControl1.SetStatusBarOption(vdControls.vdFramedControl.StatusBarOptions.SnapButton, True)    VdFramedControl1.SetStatusBarOption(vdControls.vdFramedControl.StatusBarOptions.Menu, True)    VdFramedControl1.SetStatusBarOption(vdControls.vdFramedControl.StatusBarOptions.GridButton, True)    VdFramedControl1.SetStatusBarOption(vdControls.vdFramedControl.StatusBarOptions.Paper, True)    VdFramedControl1.SetStatusBarOption(vdControls.vdFramedControl.StatusBarOptions.OrthoButton, True)    VdFramedControl1.SetStatusBarOption(vdControls.vdFramedControl.StatusBarOptions.OsnapButton, True)    '// show the menu    VdFramedControl1.ShowMenu(True)    '// In the vdFramed's PropertyGrid the selection is show. This code below finds the selection and    '// set this to be shown in the Property Grid    Dim propertygrid As vdPropertyGrid.vdPropertyGrid    propertygrid = VdFramedControl1.vdGrid    propertygrid.SelectedObject = VdFramedControl1.BaseControl.ActiveDocument ' set the default value    '// Here we find the name of the Grip Selection    Dim gripset As VectorDraw.Professional.vdCollections.vdSelection    Dim selsetname As String = "VDGRIPSET_" + VdFramedControl1.BaseControl.ActiveDocument.ActiveLayOut.Handle.ToStringValue()    If Not VdFramedControl1.BaseControl.ActiveDocument.ActiveLayOut.ActiveViewPort Is Nothing Then        selsetname = selsetname + VdFramedControl1.BaseControl.ActiveDocument.ActiveLayOut.ActiveViewPort.Handle.ToStringValue()    End If    '// This is the Grip Selections that is show in the PropertyGrid    gripset = VdFramedControl1.BaseControl.ActiveDocument.ActiveLayOut.Document.Selections.FindName(selsetname)    If Not (gripset Is Nothing) Then        If gripset.Count > 0 Then propertygrid.SelectedObject = gripset    End IfEnd SubPrivate Sub btn_ShowAsScrollable_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ShowAsScrollable.Click    '//Hide PropertyGrid, CommandLine and Status Bar    VdFramedControl1.SetLayoutStyle(vdControls.vdFramedControl.LayoutStyle.CommandLine, False)    VdFramedControl1.SetLayoutStyle(vdControls.vdFramedControl.LayoutStyle.PropertyGrid, False)    VdFramedControl1.SetLayoutStyle(vdControls.vdFramedControl.LayoutStyle.StatusBar, False)    VdFramedControl1.SetLayoutStyle(vdControls.vdFramedControl.LayoutStyle.LayoutTab, True)    '//Show scrollbars    VdFramedControl1.SetLayoutStyle(vdControls.vdFramedControl.LayoutStyle.HorizodalScroll, True)    VdFramedControl1.SetLayoutStyle(vdControls.vdFramedControl.LayoutStyle.VericalScroll, True)    '//Show the Layout Tab    VdFramedControl1.ScrollableControl.SetShowLayoutTab(True)    '//if you set the vdFramedControl1.SetLayoutStyle(vdControls.vdFramedControl.LayoutStyle.StatusBar ,true)    '// then you can hide some "features" like :    VdFramedControl1.SetStatusBarOption(vdControls.vdFramedControl.StatusBarOptions.ProgressBar, False)    VdFramedControl1.SetStatusBarOption(vdControls.vdFramedControl.StatusBarOptions.SnapButton, False)    VdFramedControl1.SetStatusBarOption(vdControls.vdFramedControl.StatusBarOptions.Menu, False    VdFramedControl1.SetStatusBarOption(vdControls.vdFramedControl.StatusBarOptions.GridButton, False)    VdFramedControl1.SetStatusBarOption(vdControls.vdFramedControl.StatusBarOptions.Paper, False)    VdFramedControl1.SetStatusBarOption(vdControls.vdFramedControl.StatusBarOptions.OrthoButton, False)    VdFramedControl1.SetStatusBarOption(vdControls.vdFramedControl.StatusBarOptions.OsnapButton, False)    '// Hide the Menu    VdFramedControl1.ShowMenu(False)End SubPrivate Sub btn_ShowAsBase_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ShowAsBase.Click    '//Hide PropertyGrid, commandLine, Layout tab and Status Bar    VdFramedControl1.SetLayoutStyle(vdControls.vdFramedControl.LayoutStyle.CommandLine, False)    VdFramedControl1.SetLayoutStyle(vdControls.vdFramedControl.LayoutStyle.PropertyGrid, False)    VdFramedControl1.SetLayoutStyle(vdControls.vdFramedControl.LayoutStyle.StatusBar, False)    VdFramedControl1.SetLayoutStyle(vdControls.vdFramedControl.LayoutStyle.LayoutTab, False)    '//Hide scrollbars    VdFramedControl1.SetLayoutStyle(vdControls.vdFramedControl.LayoutStyle.HorizodalScroll, False)    VdFramedControl1.SetLayoutStyle(vdControls.vdFramedControl.LayoutStyle.VericalScroll, False)    '//Hide the Layout Tab    VdFramedControl1.ScrollableControl.SetShowLayoutTab(False)    VdFramedControl1.ScrollableControl.SetShowVscroll(False)    VdFramedControl1.ScrollableControl.SetShowVscroll(False)End Sub

四. Vertexes的IsClockWise属性

问:可以在顶点中添加IsClockWise属性吗起也不会在“顶点区域”中计算。

答:“顶点区域”仅针对2D点计算,没有凸起。此外,无法应用IsClockWise,因为顶点不像vdPolyline那样具有ECS矩阵。因此,为了获得Vertexes的区域,如果是时钟方式,则必须使用如下代码:

VectorDraw.Professional.vdFigures.vdPolyline poly = new VectorDraw.Professional.vdFigures.vdPolyline();poly.SetUnRegisterDocument(vdFramedControl.BaseControl.ActiveDocument);poly.SetDocumentDefaults();poly.VertexList = new VectorDraw.Geometry.Vertexes(myVertexes);poly.Update();double myArea = poly.Area();bool isClockW = poly.IsClockWise();

未完待续……

标签:CAD工业4.0

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2018年10月12日
下一篇 2018年10月12日

相关推荐

发表回复

登录后才能评论