请大家来帮我看看一个编程的问题
我在编程中使用了GETENTITY函数,其目的有两个,一个用于得到一个实体(直线),另外我想同时精确的得到在它上面的一个点坐标。GETENTITY包括两个参数,一个是输出的直线实体对象,一个是在图形上选择的点的坐标,然而由于点的位置在选择的时候不一定就在被选直线实体上,我不得不进行如下操作;
当子过程运行到该函数时,在选择点时为了使选择的点在直线上,都必须人为的按住SHIFT+鼠标右键来临时选取最近点以使得到的点在直线上来完成,十分麻烦。
不知道斑竹和各位有没有这方面的编程经验,在编程代码中来自动实现点的定位。谢谢 你要得到什么点,总不会是直线上任一点吧?
直线有端点可以直接得到。 TO:<A name=22274><FONT color=#000066><B>mikewolf2k</B></FONT></A> 是用户在图形上任意选择的一点,但必须在直线上,由于GETENTITY所提取的点很难在直线上,所以需要用到临时捕捉最近点的办法来得到这个点,但是我找不到通过程序来实现临时捕捉最近点的办法。 自己算吧,一个点到直线上的垂直点。 设置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(平行) <A name=22288><FONT color=#000066><B>sdxylijian</B></FONT></A>:这个方法我试过,但是似乎对GETENTITY函数不管用,联想到这个函数是选择实体对象的用途,我们在AUTOCAD中,不管有没有设置捕捉对象,在选择实体对象中鼠标都显示为一个方框,而没有捕捉功能,只能再按SHIFT+鼠标右键,选择最近点来实现临时性捕捉,最终点落到直线上,这样对用户很不方便。 请教斑竹,有没有我首先获得点,然后获得直线实体的实现方式,只要在用户操作看来只是选择了直线上的一点就行,最好是采用能基于对象捕捉的函数,如选择GETPOINT函数,这样更加直观。 可以先获取点,然后以这个点为中心,做一个小小的矩形,选择落在这个区域的对象。 感谢两位斑竹和大家的热心帮助,采用efan2000的办法终于实现了我需要的功能。
页:
[1]