乐筑天下

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

请教:如何在插入点自动打断,并使插入块与所插入直线方向一致

[复制链接]

2

主题

14

帖子

3

银币

初来乍到

Rank: 1

铜币
22
发表于 2004-9-16 08:01:00 | 显示全部楼层 |阅读模式
我想在直线上插入一个块,要求能自动打断该直线,并调整块的方向,使之与该直线方向一致,不知如何实现(VBA),请高手指点.先谢谢啦!
回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2004-9-16 15:27:00 | 显示全部楼层
Sub ttt45()
                         Dim obj As AcadLine, pnt
                         Dim objTemp As AcadLine
                         Dim minpnt, maxpnt, cenpnt(2) As Double
                         Dim objBlock As AcadBlockReference
                         Dim height As Double
                         Dim pnts(3)
                         ThisDrawing.Utility.GetEntity obj, pnt
                         
                         temp = ThisDrawing.Utility.PolarPoint(pnt, obj.Angle + Atn(1) * 2, 10)
                         Set objTemp = ThisDrawing.ModelSpace.AddLine(pnt, temp)
                         pnt = obj.IntersectWith(objTemp, acExtendBoth)
                         objTemp.Delete
                         
                         Set objBlock = ThisDrawing.ModelSpace.InsertBlock(pnt, "1", 1, 1, 1, 0)
                         objBlock.GetBoundingBox minpnt, maxpnt
                         cenpnt(0) = (minpnt(0) + maxpnt(0)) / 2
                         cenpnt(1) = (minpnt(1) + maxpnt(1)) / 2
                         height = maxpnt(1) - minpnt(1)
                         
                         objBlock.Move cenpnt, pnt
                         objBlock.Rotate pnt, obj.Angle + Atn(1) * 2
                         
                         pnts(0) = obj.StartPoint
                         pnts(1) = ThisDrawing.Utility.PolarPoint(pnt, obj.Angle, -height / 2)
                         pnts(2) = ThisDrawing.Utility.PolarPoint(pnt, obj.Angle, height / 2)
                         pnts(3) = obj.EndPoint
                         obj.Delete
                         ThisDrawing.ModelSpace.AddLine pnts(0), pnts(1)
                         ThisDrawing.ModelSpace.AddLine pnts(2), pnts(3)
End Sub
回复

使用道具 举报

2

主题

14

帖子

3

银币

初来乍到

Rank: 1

铜币
22
发表于 2004-9-17 07:58:00 | 显示全部楼层
成功了!非常感谢!
回复

使用道具 举报

2

主题

14

帖子

3

银币

初来乍到

Rank: 1

铜币
22
发表于 2004-10-15 11:45:00 | 显示全部楼层
请问飞狐版主:如果把这里的直线改为多线该怎么实现呢,也就是说,怎么获得多线上某点所在线段(好象ACAD中多线不是由线段构成的)的座标。
先谢谢啦!
回复

使用道具 举报

26

主题

589

帖子

10

银币

中流砥柱

Rank: 25

铜币
693
发表于 2004-10-15 13:36:00 | 显示全部楼层
判断点在多段线上的最近点,然后再判断最近点在哪个线段里,这要用VLAX才能求得最近点。
回复

使用道具 举报

0

主题

1

帖子

1

银币

初来乍到

Rank: 1

铜币
1
发表于 2010-7-24 13:13:00 | 显示全部楼层
学习了。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-1 08:57 , Processed in 0.247736 second(s), 64 queries .

© 2020-2025 乐筑天下

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