sule365 发表于 2004-5-28 21:27:00

请大家来帮我看看一个编程的问题

我在编程中使用了GETENTITY函数,其目的有两个,一个用于得到一个实体(直线),另外我想同时精确的得到在它上面的一个点坐标。


GETENTITY包括两个参数,一个是输出的直线实体对象,一个是在图形上选择的点的坐标,然而由于点的位置在选择的时候不一定就在被选直线实体上,我不得不进行如下操作;


当子过程运行到该函数时,在选择点时为了使选择的点在直线上,都必须人为的按住SHIFT+鼠标右键来临时选取最近点以使得到的点在直线上来完成,十分麻烦。


不知道斑竹和各位有没有这方面的编程经验,在编程代码中来自动实现点的定位。谢谢

mikewolf2k 发表于 2004-5-28 21:36:00

你要得到什么点,总不会是直线上任一点吧?


直线有端点可以直接得到。

sule365 发表于 2004-5-28 21:42:00

TO:<A name=22274><FONT color=#000066><B>mikewolf2k</B></FONT></A>       是用户在图形上任意选择的一点,但必须在直线上,由于GETENTITY所提取的点很难在直线上,所以需要用到临时捕捉最近点的办法来得到这个点,但是我找不到通过程序来实现临时捕捉最近点的办法。

mccad 发表于 2004-5-28 21:51:00

自己算吧,一个点到直线上的垂直点。

sdxylijian 发表于 2004-5-28 21:51:00

设置cad系统变量OSMODE,例如:


                       Dim sysVarName As String<BR>                       Dim varData As Variant<BR>                       Dim intData As Integer<BR>                       Dim returnPnt As Variant<BR>                       sysVarName = "OSMODE" '系统变量类别<BR>                       varData = ThisDrawing.GetVariable(sysVarName) '存储cad原有物体捕捉的设置<BR>                       intData = varData<BR>                       ThisDrawing.SetVariable sysVarName,        512 '设置自定义的捕捉模式为NEA(最近点)<BR>                       returnPnt = ThisDrawing.Utility.GetPoint(, "请选择点位!")<BR>                       ThisDrawing.SetVariable sysVarName, 0 '取消捕捉<BR>                       returnPnt = ThisDrawing.Utility.GetPoint(, "请指定位置!")<BR>                       ThisDrawing.SetVariable sysVarName, intData '恢复原有设置模式<BR>                       Update


其中,参数说明:


OSMODE 系统变量                <BR>使用下列位码设置“对象捕捉”的运行模式:


0 NON(无)


1 END(端点)


2 MID(中点)


4 CEN(圆心)


8 NOD(节点)


16 QUA(象限点)


32 INT(交点)


64 INS(插入点)


128 PER(垂足)


256 TAN(切点)


512 NEA(最近点)


1024 QUI(快速)


2048 APP(外观交点)


4096 EXT(尺寸线)


8192 PAR(平行)

sule365 发表于 2004-5-28 22:03:00

<A name=22288><FONT color=#000066><B>sdxylijian</B></FONT></A>:这个方法我试过,但是似乎对GETENTITY函数不管用,联想到这个函数是选择实体对象的用途,我们在AUTOCAD中,不管有没有设置捕捉对象,在选择实体对象中鼠标都显示为一个方框,而没有捕捉功能,只能再按SHIFT+鼠标右键,选择最近点来实现临时性捕捉,最终点落到直线上,这样对用户很不方便。

sule365 发表于 2004-5-28 22:06:00

请教斑竹,有没有我首先获得点,然后获得直线实体的实现方式,只要在用户操作看来只是选择了直线上的一点就行,最好是采用能基于对象捕捉的函数,如选择GETPOINT函数,这样更加直观。

efan2000 发表于 2004-5-28 23:15:00

可以先获取点,然后以这个点为中心,做一个小小的矩形,选择落在这个区域的对象。

sule365 发表于 2004-5-29 08:55:00

感谢两位斑竹和大家的热心帮助,采用efan2000的办法终于实现了我需要的功能。
页: [1]
查看完整版本: 请大家来帮我看看一个编程的问题