找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1260|回复: 14

在arx中没有有对应的boundary的类

[复制链接]
发表于 2002-4-12 23:02:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
有几个相交的曲线,用鼠标点一下公有的区域,可以得到一个面域,region,在cad下操作可以用boundary 但是,在做arx程序的时候,有没有对应的类呢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-4-13 00:38:32 | 显示全部楼层
没有直接的类,

一个是自己写算法求轮廓,另外就是使用ACAD的函数bpoly或者命令做,得到封闭的POLYLINE,然后再做你需要的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-4-19 21:13:41 | 显示全部楼层
任何AutoCAD实体都可以用getGeomExtents()获取其外包容矩形,数据结构为AcDbExtent,将这些实体的外接矩形融合,就会生成一个包含所需实体的区域,融合规则可以考虑重叠和临接。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-11-21 11:13:17 | 显示全部楼层
最初由 yuanningisme 发布
[B]任何AutoCAD实体都可以用getGeomExtents()获取其外包容矩形,数据结构为AcDbExtent,将这些实体的外接矩形融合,就会生成一个包含所需实体的区域,融合规则可以考虑重叠和临接。 [/B]


getGeomExtents 得到的是矩形包围盒,和boundary 点选边界还不一样。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-11-21 14:19:00 | 显示全部楼层
外包矩形盒好像还不是最大凸包,是吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-11-27 03:17:45 | 显示全部楼层
只要是ACAD的命令做的东西,使用ARX就可以做出来,这一点我从来不怀疑。

BOUNDARY是个命令,用ARX完全可以做出来。

思路:
拿获得曲线为例,其他实体比如块内曲线通过这个算法都可以实现。

1、为了提高效率,先获得屏幕内的所有曲线的选择集,ACAD也应该是这样,超出屏幕的,ACAD的BOUNDARY也不给选。

2、把曲线都转换成AcGe模型

3、使用AcGeCurve3d::getInterval(....),获得参数化的一个有界的AcGeInterva类对象

4、然后利用AcGeInterval::intersectWith (....) 获得两条几何曲线的交,获得轮廓。

  1. [font=courier new]
  2. Adesk::Boolean

  3. intersectWith(

  4. const AcGeInterval& otherInterval,

  5. AcGeInterval& result) const;

  6. otherInterval Input interval with which to merge
  7. result Output merged interval

  8. Returns Adesk::kTrue and the intersection of this interval and the interval otherInterval i
  9. n the output argument result, if they are not disjoint up to the
  10. boundary tolerance. Returns Adesk::kFalse otherwise.

  11. [/font]
复制代码

5. 循环做上面的,得到屏幕内所有可能的轮廓。

6. 最后,判断包括这个点的最小轮廓。

AcGe 几何库给我们提供了所有ACAD数据库实体对应的几何数学模型的算法,几何实体往往比对应的数据库实体提供了更多的几何算法,通过几何库,可以做出任何东西来

只要是大家看到的ACAD的所有功能,命令,都可以用ARX做出来。

点评

AcGeInterval这个如何得到轮廓?只看到有上下界的,不知如何才能转成轮廓?  详情 回复 发表于 2021-7-28 22:55
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-11-27 03:36:55 | 显示全部楼层
这个图大家看看,有时间琢磨琢磨每个几何类的作用,会很有帮助的。


                               
登录/注册后可看大图
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-4-12 16:22:11 | 显示全部楼层
每一步的东西都好多啊,挑战哦,^_^
只能是辛苦自己写了,有人有类似的例程吗,贴出来看看啊,起码让后辈门不用走太多的弯路啊!
什么都不会也硬着头皮自己写啦,希望大家帮忙的说!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-4-13 10:35:26 | 显示全部楼层
试验一下这个:
void CallBoundaryCommand()
{
ads_point pt;
ads_name pent;
acedGetPoint(NULL, "Pick a point: ", pt);
acedCommand(RTSTR, "-boundary", RTPOINT, pt, RTSTR, "", RTNONE);
acdbEntLast(pent);
acedRedraw(pent, 3);
}
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-4-13 12:26:29 | 显示全部楼层
有谁用xd说的方法,做boundary的命令的例子啊,很想参考参考啊!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-4-13 12:37:20 | 显示全部楼层
谁有这个例子?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-4-13 13:53:46 | 显示全部楼层
XD能不能具体的说说思路啊??
比如如何得到屏幕内可见的全部实体,用acdbSSGet("C",pt1,pt2,NULL,ssname),里面的当前视口的屏幕坐标怎么得到!等等,太多的问题了,我都不好意思问了啊!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-4-14 23:21:04 | 显示全部楼层
只有想不到的,没有做不到的!
如果没有好的基础,什么都做不到!!!
还是多下点功夫吧。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2004-4-14 23:30:34 | 显示全部楼层
最初由 xinxiande 发布
[B]XD能不能具体的说说思路啊??
比如如何得到屏幕内可见的全部实体,用acdbSSGet("C",pt1,pt2,NULL,ssname),里面的当前视口的屏幕坐标怎么得到!等等,太多的问题了,我都不好意思问了啊! [/B]


开发ACAD程序是个综合的应用,首先你要对ACAD软件熟悉,这是先决条件,要熟悉的还包括系统变量的使用,因为很多ACAD的配置、设置信息都在系统变量里面。

1、获得屏幕中心点坐标的系统变量:viewctr
[field=VIEWCTR 系统变量]
(只读)
类型:三维点
保存位置:图形
存储当前视口中视图的中心点。该值用 UCS 坐标表示。
[/field]


2、获得当前视口高、宽(象素)的系统变量:screensize
[field=SCREENSIZE 系统变量]
(只读)
类型:二维点
不保存
以像素为单位存储当前视口的大小(X 和 Y 值)。
[/field]

3、按图形单位存储当前视口的高度系统变量:viewsize
[field=VIEWSIZE 系统变量]
  (只读)
类型:实数
保存位置:图形

按图形单位存储当前视口的高度。
[/field]

知道了上面三个系统变量的值,你是不是就可以求出当前视口的四个角点的坐标了?

这些内容,论坛以前都讨论过,也有的给出过代码,或者LISP或者VBA或者ARX,希望你有空能静下心来把开发论坛看看,包括LISP,VBA,ARX,定制论坛,我想你能获得很多书上看不到的东西。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 112个

财富等级: 日进斗金

发表于 2021-7-28 22:55:15 | 显示全部楼层
XDSoft 发表于 2002-11-27 03:17
只要是ACAD的命令做的东西,使用ARX就可以做出来,这一点我从来不怀疑。

BOUNDARY是个命令,用ARX完全可 ...

AcGeInterval这个如何得到轮廓?只看到有上下界的,不知如何才能转成轮廓?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-4-19 07:42 , Processed in 0.467502 second(s), 63 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表