QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
1天前
查看: 4733|回复: 43
收起左侧

[已解决] 悬赏帖,有人能做出这个东西,奖励50三维币

[复制链接]
发表于 2009-10-24 20:47:55 | 显示全部楼层 |阅读模式 来自: 中国上海

马上注册,结识高手,享用更多资源,轻松玩转三维网社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
我这里有一些点的坐标,那位朋友如果能用这些点坐标画出二维图形,奖励50三维币
未命名.jpg

123.rar

4.27 KB, 下载次数: 67

发表于 2009-10-24 21:20:08 | 显示全部楼层 来自: 中国广东广州
一定要用CAD吗? 其他软件做行不行?
发表于 2009-10-24 21:34:36 | 显示全部楼层 来自: 中国浙江宁波
坐标改成相对 然后一个一个弄过去???? :lol:
 楼主| 发表于 2009-10-24 21:40:39 | 显示全部楼层 来自: 中国上海
或者使用UG,别的不要,我不用的,
发表于 2009-10-24 22:03:14 | 显示全部楼层 来自: 中国四川成都

你看看结果

这是结果,应该没问题!

2009.10.24.rar

20.06 KB, 下载次数: 32

发表于 2009-10-24 22:08:32 | 显示全部楼层 来自: 中国四川成都

你的数据,导入EXCEL

注意在第三列中的函数,复制第三列中的所有数据,剩下的事就非常简单了,在cad中输入pline,在命令行中粘贴数据,然后你就可以看到结果了。6 G' F' }, g3 r2 E" O1 q/ }7 P/ N: H, Z
自动画图很爽!

你的数据.rar

21.16 KB, 下载次数: 35

评分

参与人数 1三维币 +5 收起 理由
woaishuijia + 5 应助

查看全部评分

发表于 2009-10-24 22:09:15 | 显示全部楼层 来自: 中国山东威海
楼主的文件可能有问题,请看图
1.jpg
发表于 2009-10-24 22:15:13 | 显示全部楼层 来自: 中国上海
文件没有问题,只是需要用记事本打开后处理一下。7 X. z2 w: d# G+ b2 H% R" r
附CAD文件和处理后的数据。

123.txt

10.1 KB, 下载次数: 18

123.dwg

63.67 KB, 下载次数: 22

评分

参与人数 1三维币 +5 收起 理由
★新手★ + 5 应助

查看全部评分

发表于 2009-10-24 22:53:42 | 显示全部楼层 来自: 中国江苏常州
用LZ的坐标,在CAD中用spline画的,不知满足要求不?; I- z- \! V  S$ M# o
!13.gif

0001.dwg

36.38 KB, 下载次数: 3

 楼主| 发表于 2009-10-24 22:56:02 | 显示全部楼层 来自: 中国上海
我要的是这个样子的图形,有人能帮忙么
未命名.jpg
发表于 2009-10-24 23:27:39 | 显示全部楼层 来自: 中国上海
没问题,第一个文件是用封闭多段线做的,第二个文件是用样条曲线做的。

123-1.dwg

40.16 KB, 下载次数: 10

123-2.dwg

41.56 KB, 下载次数: 6

评分

参与人数 1三维币 +5 收起 理由
wang2003 + 5 应助

查看全部评分

 楼主| 发表于 2009-10-25 01:03:20 | 显示全部楼层 来自: 中国上海
麻烦朋友说说,是怎么做出来的呀,多谢了。
发表于 2009-10-25 04:57:16 | 显示全部楼层 来自: 中国上海
用多段线或样条曲线,一个个点描出来的,对点的坐标重新排序很困难的,太费时间,也容易出错。
 楼主| 发表于 2009-10-25 06:03:29 | 显示全部楼层 来自: 中国上海
楼主是不是,先画出8楼的图形,然后根据外形描出出来的呀
发表于 2009-10-25 07:03:28 | 显示全部楼层 来自: 中国上海

回复 14# siemens70 的帖子

是,按我在8楼的图形再用多段线或样条曲线把所有直线的端点连起来。
发表于 2009-10-25 08:01:56 | 显示全部楼层 来自: 中国
Untitled-1.gif
4 p/ n% I  w2 @- U, |/ j; P  x4 J! `使用下面代码前,按"123.dat"文件实际路径,修改代码第五行; s- f: g( f  c4 b$ j
  1. 6 S5 Q' M6 k1 H" X  F& }6 x
  2.     Dim I As Integer, S As String, P() As Double
    " t9 a( |9 h3 I8 R- \
  3.     Dim L As Double, Lmin As Double, J As Integer, P1() As Double) C/ _; G3 M- p1 C% M! _1 @
  4.     Dim PL As AcadLWPolyline( [) G' F' ^& C' R' w+ \8 Q+ H
  5.     '从"123.dat"文件读入点坐标数据
    + x3 z; }' G7 E6 R9 o. X7 F' T5 ]+ z
  6.     I = FreeFile()
    8 t: L; i6 q2 O4 t: F
  7.     Open "C:\Documents and Settings\ZX\桌面\123.dat" For Input As I '打开文件,文件路径按实际路径修改
    ; }' O$ F% T4 i+ s: m- _+ W  C2 }
  8.         Input #I, S '读入文件中最上面一行的文字
    ) y; b) X2 E; J& M# i  [2 c
  9.         ReDim P(1)/ x) @% Y% f0 b& p" h8 h
  10.         Do '循环读入2 E( @% I. o+ O+ b+ M
  11.             Input #I, P(UBound(P) - 1), P(UBound(P)) '读入一组坐标,放在数组最后面两个位置
    * l. ?$ `. ]1 r
  12.             If EOF(I) Then '如果已读到文件结尾,则跳出循环0 b* j8 ~! s( _' n* H0 r
  13.                 Exit Do& k! w, ~% T7 B$ `% c7 f7 ?
  14.             Else '没到结尾,则重定义数组,增加一组坐标的位置2 \. i- P! e& H. Z" F
  15.                 ReDim Preserve P(UBound(P) + 2)
    * N4 k" L! E& R0 J6 f; i
  16.             End If
    0 G& B$ R9 q7 N7 j+ U6 G
  17.         Loop8 |; K4 M7 Z9 e& n
  18.     Close '关闭文件
    6 E; L& p1 s- \+ W# j1 j# E& `
  19.     '如果需要按读入的坐标画多段线,去掉下面一行代码前面的单引号即可
    " A" B7 H2 _# F- b9 P
  20.     'ThisDrawing.ModelSpace.AddLightWeightPolyline P' w, {7 ?; _- U
  21. $ ~- c  c2 O+ h2 I$ _1 F) H6 s
  22.     '对坐标重新排序,画轮廓线
    0 {. M0 P7 g6 W/ w
  23.     ReDim P1(1)
    - y# t' `* k: V3 h1 e7 }8 P
  24.     P1(0) = P(UBound(P) - 1) '把P数组中最后一组坐标复制到P1数组中
    7 l7 A, J0 _/ ^( p
  25.     P1(1) = P(UBound(P)). W$ i% L/ V' O) ?: M
  26.     Do Until UBound(P) = 1 '循环排序,当P1数组中的数据完全按规则移到P1数组中后结束循环4 ^9 q9 I4 B8 m3 R/ K- _
  27.         ReDim Preserve P(UBound(P) - 2) '重定义P数组,去掉最后一组坐标
    . w4 ]/ y/ I) _) Z
  28.         Lmin = Sqr((P1(UBound(P1) - 1) - P(0)) ^ 2 + (P1(UBound(P1)) - P(1)) ^ 2) '计算P1数组最后一组坐标点到P数组第一组坐标点的距离,并记录为当前最小距离" z3 B. s( i6 H7 \# f
  29.         J = 0 '记录当前最小距离在P数组中的位置
    # H2 B" H8 S7 u5 z
  30.         For I = 2 To UBound(P) - 1 Step 2 '从P数组第二组坐标点向后循环计算比对
    ' R5 ~* L' d& D! w
  31.             L = Sqr((P1(UBound(P1) - 1) - P(I)) ^ 2 + (P1(UBound(P1)) - P(I + 1)) ^ 2) '计算P1数组最后一组坐标点到P数组当前坐标点的距离0 V# g- u( U; u6 n5 f$ y
  32.             If L < Lmin Then '如果当前两点距离小于记录的最小距离,则把当前距离记录为最小距离,并记录当前点在P数组中的位置7 g1 T" b8 N7 U: [8 U; Z4 j" y9 N
  33.                 Lmin = L" _: S% e& A3 X3 O+ c0 ^8 u
  34.                 J = I
    # j! q# i% V: A, q# Q2 _: {" X
  35.             End If) A. h+ R1 t9 ], G8 n0 v
  36.         Next$ h, J& `' r! j  x3 W2 ^
  37.         ReDim Preserve P1(UBound(P1) + 2) '重定义P1数组,增加一组坐标的位置& ?0 f3 X4 k6 R9 a3 f9 V3 W
  38.         P1(UBound(P1) - 1) = P(J) '把P数组中找到的与P1数组最后一组坐标点距离最近的点坐标复制到P1数组后面新增加的位置  W6 N2 q& m- v/ o1 ]
  39.         P1(UBound(P1)) = P(J + 1)
    8 o/ Z- T+ y# I3 i. b# _8 ]
  40.         For I = J To UBound(P) - 3 '把P1数组中移出点坐标后面的坐标数据顺序前移* A+ O! [4 N# R
  41.             P(I) = P(I + 2)
    " ?- u0 K8 ]: Z7 d7 z9 E! a4 p
  42.             P(I + 1) = P(I + 3)3 }+ j1 M' T7 Q9 E) z! V+ D& R7 e
  43.         Next
    9 T7 }# [4 i! S- n9 J  o5 E: Y2 Y
  44.     Loop
    6 A  C6 d6 U' T3 x4 ?; A, S
  45.     '按排序后的坐标数组P1画二维多段线
    ; g3 P" v6 A) y1 k' T5 l) e
  46.     Set PL = ThisDrawing.ModelSpace.AddLightWeightPolyline(P1). m* L& E( `5 c& U  K4 o
  47.     PL.Closed = True '多段线闭合
    & F6 J5 s0 s2 E6 @- P* E
复制代码

123.rar

6.53 KB, 下载次数: 16

dvb文件

评分

参与人数 1三维币 +8 收起 理由
wang2003 + 8 应助

查看全部评分

发表于 2009-10-25 09:47:16 | 显示全部楼层 来自: 中国江苏苏州
回复woaishuijia 3 t) x, ^! g- V$ u6 r0 o  N
请问老大! 你这代码怎么用?
发表于 2009-10-25 10:15:41 | 显示全部楼层 来自: 中国安徽蚌埠
三维币不是那么好挣的呀。。。。。。
发表于 2009-10-25 10:45:49 | 显示全部楼层 来自: 中国广东佛山
应该容易吧,
发表于 2009-10-25 14:49:27 | 显示全部楼层 来自: 中国

回复 17# hfmgh 的帖子

一、下载附件6 `! D/ L+ U4 e. r+ |! |+ ]% f* r
  1、下载附件后解压,得到“123.dvb”文件4 c. {" _) D; U9 _7 ?3 Y- C; m; c
  2、在ACAD图形界面,命令行键入“VBALOAD”(或“工具”>“宏”>“加载工程”),在弹出的对话框中选择“123.dvb”文件,“打开”, k% c; \1 ^( H8 s! ~' A
  3、“ALT+F11”(或“工具”>“宏”>“Visual Basic编辑器”),在打开的VBAIDE界面修改“123.dat”文件路径' T; c. x' {: d) O' J/ I! y8 n) C
  4、“F5”运行程序,关闭IDE界面回到图形界面可看到画出的图形(或回到图形界面“ALT+F8”,选择要运行的宏“A”,“运行”。
! p% H) u2 P0 A, G, U二、复制代码7 R: o8 L7 i4 h' k
  1、“ALT+F11”(或“工具”>“宏”>“Visual Basic编辑器”),在打开的VBAIDE界面,双击“工程资源管理器”中“Thisdrawing"对象,在打开的代码窗口键入“SUB”、空格、宏名称,回车,在过程的中间部位粘贴代码,并修改“123.dat”文件路径
1 |; d/ u2 \2 L7 ]  2、“F5”运行程序,关闭IDE界面回到图形界面可看到画出的图形(或回到图形界面“ALT+F8”,选择要运行的宏,“运行”。

评分

参与人数 1三维币 +5 收起 理由
2005llnn + 5 应助

查看全部评分

发表于 2009-10-25 15:06:20 | 显示全部楼层 来自: 中国四川宜宾
这个用ug做出来,
8 w2 y; H  T  _  Q) |在倒出来可不可以呀
 楼主| 发表于 2009-10-25 21:10:26 | 显示全部楼层 来自: 中国上海
感谢我爱谁家老大的回复,我还不是看的不是很明白,老大能不能发个视屏教程,和讲讲那个附件是怎么生成的,多谢了,老大
发表于 2009-10-26 09:04:12 | 显示全部楼层 来自: 中国
16楼的代码是一段 AutoCAD VBA 代码,附件是一个“rar”格式压缩文档--本版区不支持“dvb”格式文件上传--解压后得到“123.dvb”文件,这是包含了该代码的 AutoCAD VBA 工程文件。" E& b+ C# I' @
附件的用法在 20 楼已经简单地介绍了,这里再用图文形式重新介绍一下。
* G7 y" @. C! C一、下载 16 楼附件并解压。
# K) ^  ?( Z  h1 H5 ]- c二、在 AutoCAD 主窗口新建一个文档。键入“VBALOAD”命令(或者“工具”菜单 > “宏” > “加载工程”,见图1)。2 l7 I& X, V0 ^6 H
Untitled-1.gif
/ V7 g7 v3 |1 @9 E
' O1 u0 Y: T8 r三、在弹出的“打开 VBA 工程”对话框,选中左下角的“打开 Visual Basic 编辑器”复选框,再在文件目录中选择解压得到的“123.dvb”文件,打开。见图2。
' H6 p( z: v6 K8 ` Untitled-2.gif
* b$ n" Q. W% |8 z! t* @6 l- W7 @  Z1 Y5 \4 G# J- ~) o1 `% b
四、在随之打开的 VBA IDE 窗口,修改图3中高亮显示的部分。改为你电脑中“123.dat”文件的实际完整路径。3 @; Q& ~3 z5 g/ ]
Untitled-3.gif 7 a, I# U' d8 o' L7 {) }

$ t( }/ `; [) O, m1 ~: }五、关闭 VBA IDE 窗口,返回 AutoCAD 主窗口。键入“VBARUN”命令(或者“工具”菜单 > “宏” > “宏”,见图4)。8 \- V0 k5 D! ^- r# x& U7 y
Untitled-4.gif 2 [; t% ^: P0 u8 ]/ w
+ a$ \- y( j' k4 K4 c1 I( L% K
六、在弹出的“宏”对话框上点“运行”。见图5。在图形界面上可以看到用闭合的二维多段线画出的图形。3 p2 a* P( W9 ?/ j0 B
Untitled-5.gif
1 v) p1 T) j* x" a4 {" Z6 Q( X
8 T! O0 Y" m* B# Z1 Z* U( L. q    这段程序是针对楼主的具体问题而编写的,并不具有广泛的实用意义。事实上,如果仅仅是根据点坐标数据画出图形,6 楼 yizhi4669 朋友提供的方法是最好的。只是当楼主在 10 楼提出要画的是轮廓时,问题才变得复杂起来。就像 13 楼七心海棠朋友所说,这涉及到点坐标的重新排序。通常大家会采用逐点连接的方法把它硬画出来,就像七心海棠朋友所做的一样。但我认为,这只是找不到好办法时的笨办法。其实好办法是有的,在对付重复性很强的工作--就像这个问题中的点坐标排序,还有平时某些设计方案的优选--时,最适合的方法就是 AutoCAD 的二次开发功能,比如 VBA 或 LISP,这段代码就是用 VBA 编写的。

评分

参与人数 1三维币 +10 收起 理由
2005llnn + 10 技术分享

查看全部评分

发表于 2009-10-26 09:20:49 | 显示全部楼层 来自: 中国上海
woaishuijia版主介绍的办法是很一个很好的办法,值得学习。* N+ u! L# {. p/ O) p6 [8 B4 B
使用VBA或LISP进行二次开发(就象woaishuijia版主为siemens70版主编写的这段代码一样),对于绝大多数CAD使用者来说,有点苛求,他们不会或者很少用到这些方法,甚至连现成的代码怎么用都不会,这其中也包括我在内。
发表于 2009-10-26 09:34:40 | 显示全部楼层 来自: 中国广东广州
这个用PROE做出来,再倒出来到CAD可不可以呀?
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Licensed Copyright © 2016-2020 http://www.3dportal.cn/ All Rights Reserved 京 ICP备13008828号

小黑屋|手机版|Archiver|三维网 ( 京ICP备2023026364号-1 )

快速回复 返回顶部 返回列表