乐筑天下

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

网上不一定有能人啊呀!

[复制链接]

16

主题

39

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
103
发表于 2003-8-6 00:51:00 | 显示全部楼层 |阅读模式
我有一个问题,就是"在中用VBA或Visual LISP中写一个程式,能在AUTOCAD中选中一个封闭的多义线(在封闭的多义线中有直线,倒圆角,圆弧,角度)按逆时针找出每一个2D坐标,写在一个文本文件里!
我在网上坛子里问了三个月了,十几个人说来说去,都没搞定.
回复

使用道具 举报

158

主题

2315

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2951
发表于 2003-8-6 07:36:00 | 显示全部楼层
不知以下程序是否可用:
  1. Sub oef()
  2.     Dim pnt As Variant
  3.     Dim ent1 As AcadLWPolyline
  4.     Dim ent2 As AcadLWPolyline
  5.     Dim ents As Variant
  6.     Dim pnts As Variant
  7.     Dim cnt As Integer
  8.     Dim cor() As Double
  9.     Dim i As Integer
  10.     Dim txt As String
  11.     ThisDrawing.Utility.GetEntity ent1, pnt
  12.     pnts = ent1.Coordinates
  13.     cnt = (UBound(pnts) + 1) / 2
  14.     Debug.Print cnt
  15.     ReDim cor(1, cnt) As Double
  16.     For i = 0 To UBound(pnts) Step 2
  17.         cor(0, i / 2) = ent1.Coordinates(i)
  18.         cor(1, i / 2) = ent1.Coordinates(i + 1)
  19.     Next
  20.     ents = ent1.Offset(10)
  21.     Set ent2 = ents(0)
  22.     If ent2.Area > ent1.Area Then
  23.         txt = "逆时针方向,其逆时针坐标如下:"
  24.         For i = 0 To UBound(cor, 2) - 1
  25.             txt = txt & vbCr & cor(0, i) & "," & cor(1, i)
  26.         Next
  27.     Else
  28.          txt = "线为顺时针方向,已经转换为逆时针的坐标如下:"
  29.         For i = UBound(cor, 2) - 1 To 0 Step -1
  30.             txt = txt & vbCr & cor(0, i) & "," & cor(1, i)
  31.         Next
  32.     End If
  33.     For i = 0 To UBound(ents)
  34.         ents(i).Delete
  35.     Next
  36.     MsgBox txt
  37.         
  38. End Sub
回复

使用道具 举报

16

主题

39

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
103
发表于 2003-8-6 11:04:00 | 显示全部楼层
好像你只能找到一条直线的两个点,不能找多个点,比如下图的所有直线,倒圆角,圆弧,角度的点,就没有办法!

tc4jy4r0ooh.jpg

tc4jy4r0ooh.jpg

回复

使用道具 举报

16

主题

39

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
103
发表于 2003-8-6 11:31:00 | 显示全部楼层
运行你那代码出错:
     Run-time error ‘-2147418113(8000ffff):
  Method ‘offset’ of object ‘iacadlwpolyline’failed
经调试出错代码为;
ents = ent1.Offset(10)
怎么办?????
回复

使用道具 举报

1

主题

4

帖子

1

银币

初来乍到

Rank: 1

铜币
8
发表于 2003-8-6 13:36:00 | 显示全部楼层
惨了
回复

使用道具 举报

158

主题

2315

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2951
发表于 2003-8-6 15:32:00 | 显示全部楼层
注意你的条件是:
选中一个封闭的多义线(在封闭的多义线中有直线,倒圆角,圆弧,角度)
所以程序也只考虑到你所说的多义线的情况。
回复

使用道具 举报

16

主题

39

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
103
发表于 2003-8-6 15:55:00 | 显示全部楼层
我那是封闭的多义线啊!只是画好了,用PE命令连接成一条啊!
回复

使用道具 举报

158

主题

2315

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2951
发表于 2003-8-6 17:36:00 | 显示全部楼层
我按照你所说的方法画线,圆角,再PE成多段线,但没有你所说的问题:

u42f5d1myzc.jpg

u42f5d1myzc.jpg

回复

使用道具 举报

16

主题

39

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
103
发表于 2003-8-7 09:32:00 | 显示全部楼层
请问你用的AUTOCAD是什么版本?
回复

使用道具 举报

16

主题

39

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
103
发表于 2003-8-7 09:40:00 | 显示全部楼层
可以了,谢谢!
但是能不能在直线,圆角,倒角的坐标前,作一个标识,来标识是线或是圆呢?
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 20:16 , Processed in 0.387807 second(s), 75 queries .

© 2020-2025 乐筑天下

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