AutoCAD二次开发
Aug
不写程序鸟
展开
-
局域网环境下二次开发系统的升级维护
AutoCAD提供了良好的二次开发环境,用户可以很方便的针对应用开发系统。很多情况下,针对特定应用的系统需要安装到局域网内的各个终端,这给系统的升级、维护带来了一定的问题。对于可执行程序,可以采用类似smart client的自动升级机制,然而,对于arx而言,其仅仅是一个动态连接库,往往没有足够的权限去更新自身。这里,我们可以把arx及相关菜单文件放在服务器上,并编写相应的acad.lsp,并在原创 2005-02-03 14:59:00 · 1412 阅读 · 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. 在程序中原创 2005-03-07 15:30:00 · 1457 阅读 · 0 评论 -
SDE CAD Client的入库出错问题
CAD Client为AutoCAD提供了读写SDE图形数据的功能。然而,在把AutoCAD中绘制的图形透过CAD Client存入SDE时,经常发生无法入库的情况,目前已经发现如下问题:1. 图形自交叉。实际上,绝大部分的错误都是图形自交叉引起的。SDE中无法解析自交叉的pline线,因此无法入库。对于闭合的pline线,可以通过测试是否能创建面域来检查是否存在自交叉问题。经常一些肉眼无法看到的原创 2005-03-13 17:10:00 · 1584 阅读 · 0 评论 -
使用OLEDB连接Oracle数据库无法获取对象属性的原因
出于效率及编程便利性考虑(CAD Client的连接速度实在是有点慢),在查询对象属性数据时往往是使用OLEDB直接连接Oracle进行相关查询的。然而,使用中发现偶尔会出现无法获取对象属性的问题。经分析,发现问题出在版本功能上。SDE提供了版本管理功能,用户可以很方便的进行图形的审批、回滚等操作。然而,此功能在Oracle中需要其它表的辅助,主要包括了A表和D表。ArcSDE建立了版本后,关于表原创 2005-03-14 09:20:00 · 2468 阅读 · 0 评论 -
setView的实现
昨天文章中提到的setView的函数,采用了如下代码实现。其中,先获取当前DwgView的尺寸,然后在保证pt1/pt2的显示范围的前提下,以指定矩形中心点为中心,计算出符合当前DwgView比例的范围,然后再外扩,从而得到相关的显示范围。以下代码权作备份吧,如果有开发类似的也可以以此作参考。//设置当前显示范围void setView(AcGePoint2d Pt1, AcGePoi原创 2006-05-30 15:07:00 · 4972 阅读 · 0 评论 -
关于AutoCAD中的打开文档操作
在AutoCAD R14的时候,SDI模式下,打开文档很多时候直接用ads_command(RTSTR, "_open", RTSTR, sFileName, RTNONE)这样的方法去打开,基于有些时候我们需要程序控制原文档是否保存(往往是放弃保存),因此往往需要检查当前文档是否已经被修改,是否会提示用户保存,否则,传入的sFileName往往就被当作了系统提问是否保存Yes/No的回答原创 2006-05-24 16:11:00 · 4378 阅读 · 0 评论 -
关于acedSSGet的W模式
日前,电子报批系统用户反应计算速度慢,因此对系统进行了调整,在计算对象面积的时候,考虑到原来用acedSSGet("X",NULL,NULL,rb,sset)把可能相关的对象都找出来然后再去checkRelation,在图形较大的时候,可能做了很多无用的比较,因此修改为如下的形式: AcDbEntity *pEnt; AcDbExtents extents; if(acdbOpe原创 2006-05-29 14:14:00 · 4025 阅读 · 1 评论 -
Facade模式
Facade模式的意图是:为了子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 AutoCAD的ObjectARX库为我们提供了一组完善的API和类,我们可以使用这个来搭建任意的AutoCAD二次开发应用。但很多时候,我们希望能够简化一下代码,Facade模式可以帮助我们构建应用。 关于图层的操作是非常常用的原创 2006-06-07 16:47:00 · 2013 阅读 · 0 评论 -
陷阱!关于AcDbPolyline的getPointAt
今天接到一个文件,图形检测出现了无法判断的错误。看了一下图形,有点特别,使用pe指令显示该对象与UCS不平行,使用li指令显示:LWPOLYLINE 图层: 功能分区 空间: 模型空间 句柄 = 23C1F3 闭合原创 2007-01-04 17:29:00 · 4879 阅读 · 0 评论