乐筑天下

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

[编程交流] VBA getPoint和Lin帮助

[复制链接]

14

主题

27

帖子

13

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
70
发表于 2022-7-6 22:59:25 | 显示全部楼层 |阅读模式
好的,伙计们,除了Lisp,我还在使用VBA for Autocad。
想象一下。我有一个带有1个文本框和2个按钮的表单(ok,cancel)。
当用户单击ok时,texBox中的数值存储在一个变量中,比如“a”。然后隐藏表单,用户在绘图空间内单击线条的起点-为此,我使用getpoint。然后,我在距离起点a(垂直方向)的距离处设置第二个点,并想要画一条线。我所做的有点像
 
  1. Private Sub CommandButton1_Click()
  2. 'Declare the variable used for getting the info from the textBox
  3.    Dim ALength As Double
  4.    
  5. 'Get the value from inside the textBox
  6.    ALength = CDbl(TextBox1.Text)
  7. 'Point declaration
  8.    Dim p0 As Variant
  9.    Dim p1 As Variant
  10. 'Hide the form
  11.    UserForm1.Hide
  12. 'Get point from user
  13.    p0 = ThisDrawing.Utility.GetPoint()
  14. 'Set second point
  15.    p1 = p0
  16.    p1(1) = p0(0) + ALength
  17. 'Draw the line
  18.    Dim p0p1Line As AcadLine
  19.    p0p1Line = ThisDrawing.Application.ActiveDocument.ModelSpace.AddLine(p0, p1)
  20.    
  21. End Sub

 
问题是,它不起作用。首先,我在getPoint方面有问题,但我认为我可以解决这些问题。第二,第二个点应该在Y轴上距离第一个点的长度处。这种情况不会发生。。如果p0(1)是50,长度是100,p1(1)应该是150,不是吗?在我的例子中是66或120或111.23。为什么?最后,当它到达p0p1Line=。。。。我得到一个错误(91),表示它的值为零,但如果单击“结束”,我仍然会在ACAD中绘制一条线。有什么帮助吗?
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-7 00:36:59 | 显示全部楼层
 
请注意将位移添加到p0点的坐标X。您的代码不应该改为:
 
  1. 'Set second point
  2.    p1 = p0
  3.    p1(1) = p(1) + ALength

 
此外,由于它与对象有关,因此应使用:
 
  1. Set p0p1Line = ThisDrawing.Application.ActiveDocument.ModelSpace.AddLine(p0, p1)

 
当做
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-1-31 14:46 , Processed in 0.323865 second(s), 67 queries .

© 2020-2025 乐筑天下

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