乐筑天下

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

求助:如何用vba做offset?

[复制链接]

3

主题

8

帖子

1

银币

初来乍到

Rank: 1

铜币
20
发表于 2015-6-2 16:04:00 | 显示全部楼层 |阅读模式
我的目的是这样的:
根据用户输入的apnt和bpnt,也就是一个直线的起点和终点,绘制一个直线(设为cline)。用acadline。然后,根据用户输入的宽度,比如200,用cline的offset命令,在cline两侧各生成一个直线,分别叫b1和b2.因为我在用offset之后,还要继续操作b1和b2,怎么实现?
我现在是这样的:定义b1和b2为acadline,然后set b1=cline.offset(b),执行出错。但是仍然出现了一条直线。
请问该如何实现?
回复

使用道具 举报

3

主题

8

帖子

1

银币

初来乍到

Rank: 1

铜币
20
发表于 2015-6-2 16:10:00 | 显示全部楼层
代码如下:
    Dim aPNT As ACAD_POINT
    Dim bPNT As ACAD_POINT
   
    Dim cLine As AcadLine
   
    Dim B1 As AcadLine
    Dim B2 As AcadLine
   
    Dim B As Double 'áoμÄ¿í¶è
    B = ThisDrawing.Utility.GetReal("áoμÄ¿í¶è£o")
   
   
    aPNT = ThisDrawing.Utility.GetPoint(, "êäèëÆeμã£o")
    bPNT = ThisDrawing.Utility.GetPoint(aPNT, "ÖÕμã£o")
    Set cLine = ThisDrawing.ModelSpace.AddLine(aPNT, bPNT)
    With cLine
        .Lineweight = acLnWt100
        .color = acGreen
        .Update
    End With
   
    Set B1 = cLine.Offset(B / 2)
    With B1
        .Lineweight = acLnWt000
        .color = acRed
        .Update
    End With
   
    B2 = cLine.Offset(-B / 2)
    With B1
        .Lineweight = acLnWt000
        .color = acRed
        .Update
    End With
回复

使用道具 举报

3

主题

8

帖子

1

银币

初来乍到

Rank: 1

铜币
20
发表于 2015-6-3 16:04:00 | 显示全部楼层
明白了,offset命令返回的是一个variant的数组!也就是说,经过:B1 = cLine.Offset(B / 2) 后返回的b1,实际上已经变成了一个数组,虽然这个数组只有一个实体,也就是B1(0)
回复

使用道具 举报

2

主题

9

帖子

1

银币

初来乍到

Rank: 1

铜币
17
发表于 2015-6-4 15:34:00 | 显示全部楼层
OFFset是一个高深的问题,尤期是在图形退化的时候,最好能搞一个纯算法的偏移
回复

使用道具 举报

3

主题

8

帖子

1

银币

初来乍到

Rank: 1

铜币
20
发表于 2015-6-12 10:05:00 | 显示全部楼层
什么是“图形退化”?
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-6-29 03:50 , Processed in 0.896441 second(s), 80 queries .

© 2020-2025 乐筑天下

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