明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2595|回复: 4

如何实现交互式绘图

[复制链接]
发表于 2006-5-15 15:19:00 | 显示全部楼层 |阅读模式

有两个问题,麻烦给以解释:

1。用vb控制出好的图,怎样用鼠标在cad中修改控制点后,其坐标实时反映到数据的变化里,有没可能在拖动直线的控制点之后,放松鼠标的同时,跳出对话框,进行值的输入,基本程序怎样实现?

2。如果图过长(比如公路走线图)而又不分幅,外图框怎样跟着加长,正好将线路图完全包裹在矩形框内,我分析有两个办法:1。我记得有个外包线的功能,可是不知怎样用程序实现;2。图框的横向x值用路线终点的值代替,而不是A3图幅的420,可是完全动态程序看起来会很麻烦

谢谢指导!

发表于 2006-5-15 16:13:00 | 显示全部楼层

1,你的说功能完全没有问题,做法如下:

    创建一个类模块(名称"Class1"),然后在声明段添加下面语句

   Public WithEvents Line As AcadLine

    然后在同一类模块中加入下面过程作为Modified事件触发器:

    Private Sub line_modified(ByVal pObject As AutoCAD.AcadObject)
         UserForm1.Show  '加载你自定义的窗体
    End Sub

    创建一个模块,写入下面的代码:

    Dim eventobj As New Class1
    Sub main()
    Dim line1 As AcadLine
    Dim startPoint(2) As Double, endPoint(2) As Double
    startPoint(0) = 0: startPoint(1) = 0: startPoint(2) = 0
    endPoint(0) = 50: endPoint(1) = 50: endPoint(2) = 0

    Set line1 = ThisDrawing.ModelSpace.AddLine(startPoint, endPoint)
    Set eventobj.Line = line1
    End Sub

代码写完了,末尾别忘了加上一个userform,运行一下就得到你的效果了

 

2,有了上面的程序,相信这个问题也好解决了吧

 楼主| 发表于 2006-5-20 01:49:00 | 显示全部楼层

说实话,不是太明白,因为一般CAD使用不都是对话框里做个拾取点,拾取实体,然后在返回对话框的过程么?您给我的这个类模块我试过了,可以跳出窗体,可是怎么显示那种人工拉线的功能呢?对于类模块的使用我还不是太熟悉,您多费心,给我解释下哈。

发表于 2006-5-20 08:27:00 | 显示全部楼层

To dynacy:

    你说的人工拉线的功能是指什么?我看你最开始发的帖子里没有说啊。。。

 楼主| 发表于 2006-5-23 10:46:00 | 显示全部楼层

其实我要实现的人工拉坡功能在CAD中就是在CAD中用线段连续画若干条,当点选线段的端控制点时,随着鼠标左键的释放,该端控制点移到新位置,同时它两边的线段也同时移到新位置,我画了个简图也许更容易明白,请您参阅。另外,线段的端点的坐标是通过vb程序读取access数据库得到的,有没有可能当鼠标拖动控制点到新位置时,该点的坐标在数据库的数值也在变(x表示公路里程,y表示公路高程),这个功能可能不太容易用语言写到通用,您看能不能给我个思路?当然您是高手,或许还真能写到通用程序呢

本帖子中包含更多资源

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

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 19:51 , Processed in 0.191433 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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