关闭

陷阱!关于AcDbPolyline的getPointAt

今天接到一个文件,图形检测出现了无法判断的错误。看了一下图形,有点特别,使用pe指令显示该对象与UCS不平行,使用li指令显示:LWPOLYLINE  图层: 功能分区                            空间: 模型空间                            句柄 = 23C1F3                            闭合         ...
阅读(2867) 评论(0)

讨厌的VC编译项

 在程序中做了个CheckRelation(AcDbObjectId eId1, AcDbObjectId eId2)函数,用于判断两个pline线对象的空间拓扑关系,在多数情况下工作正常,很高兴的编译发布了。昨天突然发现在判断一个非常显眼的pline线交叉时居然出错了,而且都是直线段,没有圆弧——CheckRelation中关于直线段是否交叉用的是数学方法,包括CheckRelation...
阅读(844) 评论(0)

Facade模式

    Facade模式的意图是:为了子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。    AutoCAD的ObjectARX库为我们提供了一组完善的API和类,我们可以使用这个来搭建任意的AutoCAD二次开发应用。但很多时候,我们希望能够简化一下代码,Facade模式可以帮助我们构建应用。    关于图层的操作是非常常用的...
阅读(1653) 评论(0)

setView的实现

    昨天文章中提到的setView的函数,采用了如下代码实现。其中,先获取当前DwgView的尺寸,然后在保证pt1/pt2的显示范围的前提下,以指定矩形中心点为中心,计算出符合当前DwgView比例的范围,然后再外扩,从而得到相关的显示范围。以下代码权作备份吧,如果有开发类似的也可以以此作参考。//设置当前显示范围void setView(AcGePoint2d Pt1, AcGePoi...
阅读(2057) 评论(0)

关于acedSSGet的W模式

    日前,电子报批系统用户反应计算速度慢,因此对系统进行了调整,在计算对象面积的时候,考虑到原来用acedSSGet("X",NULL,NULL,rb,sset)把可能相关的对象都找出来然后再去checkRelation,在图形较大的时候,可能做了很多无用的比较,因此修改为如下的形式:  AcDbEntity *pEnt;  AcDbExtents extents;  if(acdbOpe...
阅读(3018) 评论(1)

关于AutoCAD中的打开文档操作

    在AutoCAD R14的时候,SDI模式下,打开文档很多时候直接用ads_command(RTSTR, "_open", RTSTR, sFileName, RTNONE)这样的方法去打开,基于有些时候我们需要程序控制原文档是否保存(往往是放弃保存),因此往往需要检查当前文档是否已经被修改,是否会提示用户保存,否则,传入的sFileName往往就被当作了系统提问是否保存Yes/No的回答...
阅读(2865) 评论(0)

使用OLEDB连接Oracle数据库无法获取对象属性的原因

出于效率及编程便利性考虑(CAD Client的连接速度实在是有点慢),在查询对象属性数据时往往是使用OLEDB直接连接Oracle进行相关查询的。然而,使用中发现偶尔会出现无法获取对象属性的问题。经分析,发现问题出在版本功能上。SDE提供了版本管理功能,用户可以很方便的进行图形的审批、回滚等操作。然而,此功能在Oracle中需要其它表的辅助,主要包括了A表和D表。ArcSDE建立了版本后,关于表...
阅读(2004) 评论(0)

SDE CAD Client的入库出错问题

CAD Client为AutoCAD提供了读写SDE图形数据的功能。然而,在把AutoCAD中绘制的图形透过CAD Client存入SDE时,经常发生无法入库的情况,目前已经发现如下问题:1. 图形自交叉。实际上,绝大部分的错误都是图形自交叉引起的。SDE中无法解析自交叉的pline线,因此无法入库。对于闭合的pline线,可以通过测试是否能创建面域来检查是否存在自交叉问题。经常一些肉眼无法看到的...
阅读(1282) 评论(0)

R14版的ObjectARX程序向2002升级的注意事项

1. 修改include目录和lib目录2. 修改project settings    (1) link->general, 修改 对象/库模块    (2) link->output, 删除 根路径、输入点符号    (3) C++->general, 修改 预处理程序定义3. 在stdafx.h中添加对应的头文件(可从object Arx 2002 sdk自动生成代码中拷贝)。4. 在程序中...
阅读(1158) 评论(0)

随笔

人工智能一直是我很想深入探讨的领域。以符号为主还是以神经元连接为主,没有定论。以计算机仿生,也许不一定要按现实人类的模式实现,或者存在其它的智能模式更适合计算机实现。作为智能体的判断,黑室测试只是一种测试,而非智能本质。智能必须能学习。学习必须有一定格式的知识。知识可以通过外界获取,但必须可以通过系统内部演化得到。符号流派过于强调外界提供知识,因而无法实现真正智能;连接流派难以把现有知识转换,也许...
阅读(831) 评论(0)

局域网环境下二次开发系统的升级维护

AutoCAD提供了良好的二次开发环境,用户可以很方便的针对应用开发系统。很多情况下,针对特定应用的系统需要安装到局域网内的各个终端,这给系统的升级、维护带来了一定的问题。对于可执行程序,可以采用类似smart client的自动升级机制,然而,对于arx而言,其仅仅是一个动态连接库,往往没有足够的权限去更新自身。这里,我们可以把arx及相关菜单文件放在服务器上,并编写相应的acad.lsp,并在...
阅读(1065) 评论(0)
    个人资料
    • 访问:23849次
    • 积分:358
    • 等级:
    • 排名:千里之外
    • 原创:11篇
    • 转载:0篇
    • 译文:0篇
    • 评论:1条
    文章分类
    最新评论