CAD .NET问题解答集锦(连载一)

CAD .NET是一款在CAD领域被广泛应用的控件,可以快速准确的阅读DWG和DXF文件,并且通过Windows GDI+方法绘制件,支持多种文件格式,包括DWG、DXF、Gerber、光栅图像等,并支持部分编辑功能。
接下来我们将以问答形式为大家解决在使用CAD .NET时所遇到的一些问题,该系列连载希望可以给大家一些帮助和参考。

一:SelectExt()的问题
问:在将表单v11更新为v12后,我仍然面临几个问题,其中大多数与选择有关。我正在使用SelectExt()函数,该函数应该在给定点返回所选实体,此函数不返回实体。设置CADSelector.UseShiftToAddSelected = True将返回实体,但也将允许多次选择,这是不需要的。使用Select()而不是SelectExt()返回true,两个函数不应该相同吗?

我对这个问题做了进一步考虑了一下。有一个名为clearPrevSelected(bool)的参数,在v11中:将值设置为true将取消选择其他实体并选择新实体;在v12中:将值设置为true将不会取消选择除选择已选择的实体之外的任何实体。如果要选择未选择的实体,则此函数将返回null。

为什么param仍然被称为clearPrevSelected,但不会像以前的版本那样?此参数现在确定是否要选择或取消选择实体,而不是取消选择其他实体。

另外一个问题:删除实体选择的首选方法是什么?我要清除所有选择,但清除所选实体列表不会更新图形。ClearSelection()将删除选择(并删除集合中的实体)但标记仍然存在,因此我也使用ClearMarkers()。但感觉不对,如果我们只想从列表中删除实体,这也不会起作用。

答:在v12中,CADSelector.SelectExt()方法行为取决于所述的CADSelector.UseShiftToAddSelected属性值。方法的第三个参数(clearPrevSelection)实际上采用Shift键状态(按下并保持或未按下)。 如果不需要多项选择,你应该执行以下操作:

设置CADSelector.UseShiftToAddSelected = True,以便用户必须按住Shift键才能将新对象添加到选择集。
通过将clearPrevSelection值设置为False,禁止在SelectExt()方法中使用Shift键:
参见以下代码:

Me.cadImage.SelectExt(e.X, e.Y, False, True)

要通过一次调用清除SelectedEntities和Markers集合,请使用CADImage.Selector.UndoSelect()方法。

二:在DXF中保存CADInsert不起作用
问:我在CADBlock中添加了几个CADPolylines,最后一个我将它添加到CADInsert中,我控制了CADEditorControl.Image,但是,当我想以DXF格式保存存储在CADInsert中的元素时,它不存储元素也不是CADInsert。

答:元素(给定案例中的CADPolylines)实际存储在CADBlock中,而不是CADInsert中。CADInsert只是通过CADInsert.Block属性引用CADBlock。你能否发一下创建CADBlock和CADInsert的代码,并将这些对象添加到CADEditorControl.Image中?我会检查一下。

问:代码如下:

private bool PlaceEntity(CADEntity aEntity)
{
    return PlaceEntity(aEntity, "");
}
 
private bool PlaceEntity(CADEntity aEntity, string aLayoutName)
{
    CADLayout vLayout;
    if (aLayoutName == "")
        vLayout = editor.Image.Layouts[0];
    else
        vLayout = editor.Image.Converter.LayoutByName(aLayoutName);
 
    if (vLayout == null) return false;
 
    editor.Image.Converter.Loads(aEntity);
    vLayout.AddEntity(aEntity);
 
    return true;
}
 
private void DrawDoriArea(DPoint point)
{
    CADBlock block = new CADBlock();
    block.Name = "blockDoriArea";
 
    block.AddEntity(DrawCamera(point));
    block.AddEntity(DrawLens(point));
    block.AddEntity(DrawIdentificationArea(point));
    block.AddEntity(DrawRecognitionArea(point));
    block.AddEntity(DrawObservationArea(point));
    block.AddEntity(DrawDetectionArea(point));
    block.AddEntity(DrawArc(point));
 
    CADInsert insert = new CADInsert();
    insert.Block = block;
 
    if (!PlaceEntity(insert))
        editor.Image.Converter.GetSection(ConvSection.Blocks).RemoveEntityByName("blockDoriArea");
}

答:你的代码中存在两个问题:

1)你没有将CADBlock添加到BLOCKS部分,缺少以下代码:

private void AddEntToSection(ConvSection aSection, CADEntity aEntity)
{
    editor.Image.Converter.Loads(aEntity);
    editor.Image.Converter.GetSection(aSection).AddEntity(aEntity);
}
 
    ...
     
    CADBlock block = new CADBlock();
    block.Name = "blockDoriArea";
    AddEntToSection(ConvSection.Blocks, block);

2)CADInsert必须有插入点,所以缺少以下代码:

insert.Point = new DPoint(0, 0, 0);

问:这一点都是写成(0,0,0)吗?

答:不,你可以使用任何(X,Y,Z)值,具体取决于你要放置CADInsert对象的位置。(0,0,0)只是举的一个例子。

未完待续~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、总体介绍 CADViewer+图纸浏览控件是一个实现对AutoCAD R14-2016图纸(DWG/DWF/DXF)安全浏览的ActiveX产品。CADViewer+提供平移\缩放\全图\测距\测面积\图层显示控制等常用功能,并支持VC++、Dephi、Java、VB、.Net、Php等开发语言。 2、功能介绍 安装本软件后,可以通过各类语言来调用CADViewer+控件。控件具备如下功能: 1)开窗放大功能 产品提供开窗放大功能,使用者可以根据需要对图纸进行局部放大充满窗口 2) 放大、缩小功能 使用者可以根据需要对图纸进行放大、缩小浏览,此处支持鼠标滑轮滚动对图纸进行放大、缩小的调整。 3) 全图 系统提供全图显示功能。 4)平移 此处有三种方式可使用此功能:1可以对图纸进行多方向拖动。2)单击鼠标右键,选项中也由此功能键,可点击使用此功能。 5) 捕捉设置 本软件提供捕捉设置功能,方便使用者在测量距离和面积时进行点的捕捉。使用者单击鼠标右键,选择“捕捉设置”进入捕捉设置界面,即可对其进行设置。 6) 测量功能 本软件提供测量距离、测量面积两种测量功能方便用户使用。 测量距离功能 点击测量功能按钮后,使用者选定两点后即可测出两点间距离。 测量面积功能 使用者点击测量面积按钮后,单击鼠标左键进行区域选中(不包含曲线选中),选中完成后单击鼠标右键即显示所选区域的周长和面积。 7) 图层管理 本软件提供图层管理功能,使用者单击鼠标右键或者点击图层管理的图标,选择“图层管理”进入图层管理界面,该界面可进行“显示”“冻结”“锁定”的更改,单击相应图标即可进行设置。 8) 视觉样式显示模型 视觉样式是一组设置,用来控制视口中边和着色的显示。更改视觉样式的特性,而不是使用命令和设置系统变量。一旦应用了视觉样式或更改了其设置,就可以在视口中查看效果。 二维线框 显示用直线和曲线表示边界的对象。光栅和 OLE 对象、线型和线宽均可见。 三维线框 显示用直线和曲线表示边界的对象。 三维隐藏 显示用三维线框表示的对象并隐藏表示后向面的直线。 三维真实 着色多边形平面间的对象,并使对象的边平滑化。将显示已附着到对象的材质。 三维概念 着色多边形平面间的对象,并使对象的边平滑化。着色使用古氏面样式,一种冷色和暖色之间的转场而不是从深色到浅色的转场。效果缺乏真实感,但是可以更方便地查看模型的细节。 3、、产品特色 1)支持多种主流编程语言 产品支持在VC++、VB、.Net和html中调用控件。 2)提供可靠的安全性 用户只可在线浏览图纸文件,无法进行拷贝、另存和打印等操作。 3)无需安装AutoCAD即可实现在线浏览图纸文件 采用自主图纸解析引擎,脱离AutoCAD,即可浏览图纸文件。 4)提供了方便的浏览辅助工具 为用户提供了一系列的浏览辅助工具,方便用户进行浏览,其中包括:移动、放大、缩小、充满显示、开窗放大,测量距离和面积等。 5)支持多版本CAD图纸文件 支持浏览R14-2015版本的图纸文件。
Tomcat 500错误是指服务器内部发生错误,导致无法完成请求的处理,通常会返回一个500状态码。以下是一些可能导致Tomcat 500错误的常见问题: 1. 代码错误:如果您的应用程序中存在语法错误或逻辑错误,则可能会导致服务器内部错误。 2. 缺少依赖项:如果您的应用程序依赖于某些库或框架,但这些依赖项不存在或未正确配置,则可能会导致服务器内部错误。 3. 配置错误:如果您的Tomcat服务器配置存在错误,则可能会导致服务器内部错误。例如,如果您添加了重复的servlet映射,或者您的配置文件包含无效的XML元素,则可能会导致此类错误。 4. 数据库连接问题:如果您的应用程序依赖于数据库,并且数据库连接存在问题,则可能会导致服务器内部错误。 5. 内存问题:如果您的应用程序使用了大量内存,而服务器的内存限制不足以处理该应用程序,则可能会导致服务器内部错误。 6. 文件系统权限问题:如果您的应用程序需要访问特定的文件或目录,但是Tomcat服务器没有足够的权限来访问它们,那么可能会导致服务器内部错误。 为了解决Tomcat 500错误,您可以尝试以下步骤: 1. 检查应用程序代码是否存在问题,例如语法错误或逻辑错误。 2. 检查应用程序依赖项是否正确配置,例如库或框架。 3. 检查Tomcat服务器的配置是否正确,并且是否存在任何重复的servlet映射或无效的XML元素。 4. 检查数据库连接是否正常工作,例如连接字符串、用户名和密码是否正确。 5. 增加服务器的内存限制,如果您的应用程序需要更多内存来运行。 6. 检查Tomcat服务器是否拥有足够的权限来访问应用程序所需的文件和目录。 如果以上步骤都无法解决问题,您可以查看Tomcat服务器的日志文件,以获取更多详细信息,或者请参考Tomcat官方文档或社区论坛,以获取更多帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值