乐筑天下

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

还是直线问题

[复制链接]

5

主题

25

帖子

1

银币

初来乍到

Rank: 1

铜币
45
发表于 2004-6-4 16:26:00 | 显示全部楼层 |阅读模式
问一个简单的问题
lineobj as acadline
lineobj1 as acadline
这样的程序可以实现吗:
lineobj1=thisdrawing.modelspace.addline         (lineobj.startpoint, pt)
就把两点连线然后赋直线给lineobj1,使lineobj1具有lineobj1.startpoint 和lineobj1.endpoint
如果不行,应该怎么做,特急,在线等
回复

使用道具 举报

gzy

25

主题

1118

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1221
发表于 2004-6-4 16:34:00 | 显示全部楼层
你为什么不自己试一下呢?
  1. Sub test()
  2. Dim p1(0 To 2) As Double, p2(0 To 2) As Double
  3. p1(0) = 0
  4. p1(1) = 0
  5. p1(2) = 0
  6. p2(0) = 100
  7. p2(1) = 100
  8. p2(2) = 0
  9. Dim line1 As AcadLine
  10. Set line1 = ThisDrawing.ModelSpace.AddLine(p1, p2)Dim pt(0 To 2) As Double
  11. pt(0) = 100
  12. pt(1) = 50
  13. pt(2) = 0
  14. Set line1 = ThisDrawing.ModelSpace.AddLine(line1.EndPoint, pt)
  15. End Sub
回复

使用道具 举报

5

主题

25

帖子

1

银币

初来乍到

Rank: 1

铜币
45
发表于 2004-6-4 17:00:00 | 显示全部楼层
我用过了,这个我知道的 我是在一点程序里运行的,老是在这一段停住了,
lineobj1 as acadline
For Each entobj3 In objselectionset1
                                                         For Each entobj4 In objselectionset4
                                                                                         Set lineobj = entobj3
                                                                                 pt = entobj3.IntersectWith(entobj4, acExtendNone)
                                                                                                         lineobj1 = ThisDrawing.ModelSpace.AddLine(lineobj.StartPoint, pt)
错误提示内容为:对象变量或with块变量未设置
在程序里我从没用过with块,你可以知道大概是哪里有问题吗?》
回复

使用道具 举报

gzy

25

主题

1118

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1221
发表于 2004-6-4 17:02:00 | 显示全部楼层
贴多一点代码给大家看看吧。
回复

使用道具 举报

5

主题

25

帖子

1

银币

初来乍到

Rank: 1

铜币
45
发表于 2004-6-4 17:11:00 | 显示全部楼层
我做的是关于剪切线段的代码 比如说有4条直线成井字放置,长短都不一样,
我想把交点之间的线段都剪掉,
编了下面部分代码
         flog = True
                         For Each entobj3 In objselectionset1
                                                         For Each entobj4 In objselectionset4
                                                                                         Set lineobj = entobj3
                                                                                 pt = entobj3.IntersectWith(entobj4, acExtendNone)
                                                                                         If flog = True Then
                                                                                 lineobj1 = ThisDrawing.ModelSpace.AddLine(lineobj.StartPoint, pt)
                                                                                 lineobj2 = ThisDrawing.ModelSpace.AddLine(lineobj.EndPoint, pt)
                                                                                                         flog = False
                                                                                 Else
                                                                                                 lineobj3 = ThisDrawing.ModelSpace.AddLine(lineobj.StartPoint, pt)
                                                                                                 lineobj4 = ThisDrawing.ModelSpace.AddLine(lineobj.EndPoint, pt)
                                                         
                                                                                                                         If Sqr((lineobj1.StartPoint(0) - lineobj1.EndPoint(0)) ^ 2 + (lineobj1.StartPoint(1) - lineobj1.EndPoint(1)) ^ 2) < Sqr((lineobj3.StartPoint(0) - lineobj3.EndPoint(0)) ^ 2 + (lineobj3.StartPoint(1) - lineobj3.EndPoint(1)) ^ 2) Then
                                                                                                                         lineobj3.Delete
                                                                                                                                         
                                                                                                                                         Else: lineobj1.Delete
                                                                                                                         End If
                                                                                                                         If Sqr((lineobj2.StartPoint(0) - lineobj2.EndPoint(0)) ^ 2 + (lineobj2.StartPoint(1) - lineobj2.EndPoint(1)) ^ 2) < Sqr((lineobj4.StartPoint(0) - lineobj4.EndPoint(0)) ^ 2 + (lineobj4.StartPoint(1) - lineobj4.EndPoint(1)) ^ 2) Then
                                                                                                                                         lineobj2.Delete
                                                                                                                                 Else: lineobj4.Delete
                                                                                                                 End If
                                                                                                                 flog = True
                                                                                         End If
                                                                         Next
                                                         entobj3.Delete
                         Next
                                                         
其中objselectionset1为两条横放直线,objselectionset2为两条竖放直线
回复

使用道具 举报

gzy

25

主题

1118

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1221
发表于 2004-6-4 17:15:00 | 显示全部楼层

这里efan2000不是给你了吗?不过长度差距突出的话有点问题。
回复

使用道具 举报

5

主题

25

帖子

1

银币

初来乍到

Rank: 1

铜币
45
发表于 2004-6-4 17:19:00 | 显示全部楼层
每次运行到 lineobj1 = ThisDrawing.ModelSpace.AddLine(lineobj.StartPoint, pt)
的时候就会提示错误:对象变量或with块变量未设置
能不能帮我改一下程序,在线等
回复

使用道具 举报

5

主题

25

帖子

1

银币

初来乍到

Rank: 1

铜币
45
发表于 2004-6-4 17:34:00 | 显示全部楼层
不知道删除已经addline的直线,用lineobj1.delet可以删除图里的直线吗
如果不能应该用什么方法删除图里的直线啊!我想先问这个
回复

使用道具 举报

gzy

25

主题

1118

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1221
发表于 2004-6-4 17:47:00 | 显示全部楼层
你一试不就知道了吗?你试试有无line1.Delete 这句话的运行结果
  1. Sub test()
  2. Dim p1(0 To 2) As Double, p2(0 To 2) As Double
  3. p1(0) = 0
  4. p1(1) = 0
  5. p1(2) = 0
  6. p2(0) = 100
  7. p2(1) = 100
  8. p2(2) = 0
  9. Dim line1 As AcadLine
  10. Set line1 = ThisDrawing.ModelSpace.AddLine(p1, p2)Dim pt(0 To 2) As Double
  11. pt(0) = 100
  12. pt(1) = 50
  13. pt(2) = 0
  14. Dim line2 As AcadLine
  15. Set line2 = ThisDrawing.ModelSpace.AddLine(line1.EndPoint, pt)line1.Delete  '你试试有无这句话的运行结果End Sub
回复

使用道具 举报

158

主题

2315

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2951
发表于 2004-6-4 19:39:00 | 显示全部楼层
关键是IntersectWith方法取得的结果是数组,而不是单纯的一个点。多看看帮助文件吧。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-15 17:22 , Processed in 2.148185 second(s), 72 queries .

© 2020-2025 乐筑天下

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