乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 164|回复: 8

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

[复制链接]

3

主题

8

帖子

2

银币

初来乍到

Rank: 1

铜币
20
发表于 2004-5-28 21:27:00 | 显示全部楼层 |阅读模式
我在编程中使用了GETENTITY函数,其目的有两个,一个用于得到一个实体(直线),另外我想同时精确的得到在它上面的一个点坐标。
GETENTITY包括两个参数,一个是输出的直线实体对象,一个是在图形上选择的点的坐标,然而由于点的位置在选择的时候不一定就在被选直线实体上,我不得不进行如下操作;
当子过程运行到该函数时,在选择点时为了使选择的点在直线上,都必须人为的按住SHIFT+鼠标右键来临时选取最近点以使得到的点在直线上来完成,十分麻烦。
不知道斑竹和各位有没有这方面的编程经验,在编程代码中来自动实现点的定位。谢谢
回复

使用道具 举报

85

主题

1175

帖子

11

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1518
发表于 2004-5-28 21:36:00 | 显示全部楼层
你要得到什么点,总不会是直线上任一点吧?
直线有端点可以直接得到。
回复

使用道具 举报

3

主题

8

帖子

2

银币

初来乍到

Rank: 1

铜币
20
发表于 2004-5-28 21:42:00 | 显示全部楼层
TO:mikewolf2k         是用户在图形上任意选择的一点,但必须在直线上,由于GETENTITY所提取的点很难在直线上,所以需要用到临时捕捉最近点的办法来得到这个点,但是我找不到通过程序来实现临时捕捉最近点的办法。
回复

使用道具 举报

158

主题

2315

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2951
发表于 2004-5-28 21:51:00 | 显示全部楼层
自己算吧,一个点到直线上的垂直点。
回复

使用道具 举报

4

主题

20

帖子

5

银币

初来乍到

Rank: 1

铜币
36
发表于 2004-5-28 21:51:00 | 显示全部楼层
设置cad系统变量OSMODE,例如:
                         Dim sysVarName As String
                         Dim varData As Variant
                         Dim intData As Integer
                         Dim returnPnt As Variant
                         sysVarName = "OSMODE" '系统变量类别
                         varData = ThisDrawing.GetVariable(sysVarName) '存储cad原有物体捕捉的设置
                         intData = varData
                         ThisDrawing.SetVariable sysVarName,        512 '设置自定义的捕捉模式为NEA(最近点)
                         returnPnt = ThisDrawing.Utility.GetPoint(, "请选择点位!")
                         ThisDrawing.SetVariable sysVarName, 0 '取消捕捉
                         returnPnt = ThisDrawing.Utility.GetPoint(, "请指定位置!")
                         ThisDrawing.SetVariable sysVarName, intData '恢复原有设置模式
                         Update
其中,参数说明:
OSMODE 系统变量               
使用下列位码设置“对象捕捉”的运行模式:
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(平行)
回复

使用道具 举报

3

主题

8

帖子

2

银币

初来乍到

Rank: 1

铜币
20
发表于 2004-5-28 22:03:00 | 显示全部楼层
sdxylijian:这个方法我试过,但是似乎对GETENTITY函数不管用,联想到这个函数是选择实体对象的用途,我们在AUTOCAD中,不管有没有设置捕捉对象,在选择实体对象中鼠标都显示为一个方框,而没有捕捉功能,只能再按SHIFT+鼠标右键,选择最近点来实现临时性捕捉,最终点落到直线上,这样对用户很不方便。
回复

使用道具 举报

3

主题

8

帖子

2

银币

初来乍到

Rank: 1

铜币
20
发表于 2004-5-28 22:06:00 | 显示全部楼层
请教斑竹,有没有我首先获得点,然后获得直线实体的实现方式,只要在用户操作看来只是选择了直线上的一点就行,最好是采用能基于对象捕捉的函数,如选择GETPOINT函数,这样更加直观。
回复

使用道具 举报

26

主题

589

帖子

10

银币

中流砥柱

Rank: 25

铜币
693
发表于 2004-5-28 23:15:00 | 显示全部楼层
可以先获取点,然后以这个点为中心,做一个小小的矩形,选择落在这个区域的对象。
回复

使用道具 举报

3

主题

8

帖子

2

银币

初来乍到

Rank: 1

铜币
20
发表于 2004-5-29 08:55:00 | 显示全部楼层
感谢两位斑竹和大家的热心帮助,采用efan2000的办法终于实现了我需要的功能。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-15 17:34 , Processed in 0.432761 second(s), 70 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表