几何尺寸与公差论坛

 找回密码
 注册
查看: 876|回复: 0

【转帖】基于vb的sw二次开发,从txt中输入点

[复制链接]
发表于 2009-4-14 13:43:50 | 显示全部楼层 |阅读模式
基于vb的sw二次开发,从txt中输入点
www.dimcax.com
我要从txt中读取点云数据的三维坐标值,并输入到solidworks中绘成点,
$ b2 p$ g- n; p8 _  c其中txt格式为多行,每行三个数字值,分别表示x,y和z坐标;& u4 t& q( z8 h. [, l
比如text3的内容如下(共12行):
% d% a5 b; n5 z$ g# c33.4391 -13.80677 -18.66343& j8 g  n& _7 y, b1 u7 f5 s: }
33.1812 -13.80677 -18.89947
) g9 o! d  y, `! z6 }! m32.71694 -13.80677 -19.27025# x7 q$ {; y- g7 b6 z: ^
32.47022 -13.80677 -19.45361: a4 k; o' a; n/ t
32.22339 -13.80677 -19.631 d+ v. s3 p' @0 |) o7 k. u
31.97611 -13.80677 -19.78291. u/ u3 s& |3 y8 e
31.72859 -13.80677 -19.9218" w9 g  l4 v& c9 v! ]) n
31.48109 -13.80677 -20.06222
4 {* r: d3 r7 f8 [" l31.23331 -13.80677 -20.18699
. ]  n0 `" l0 e% y' h. \30.98543 -13.80677 -20.306783 v3 e3 m  w6 g) ~
30.73736 -13.80677 -20.41619- r4 f! r) t. s0 }
30.48906 -13.80677 -20.51301


我vb的编程是这样的:
, j' i6 `- x4 n( h# e5 r" _dim swapp as object
6 ]5 \5 i: ^1 u% t; w. x" m! h; [dim filename as variant5 x! @* c( y1 m6 ]* x5 b
dim part as object8 k) j# u$ p2 u) }4 ]
/ i2 v( c! f3 e7 @
sub main()
, z$ h  w2 b: i % b$ `4 q* z. d
   dim textline as variant1 l6 v7 d0 ^4 x& q- ~* q7 d% `
   set swapp = application.sldworks" r  i( b& e) t# t
   set part = swapp.activedoc
- d1 o4 v. t; |3 [   
9 u7 r3 s; j# f7 \   dim x as double6 n  {, i3 i3 n' h8 v& `
   dim y as double( r- `0 a9 r! x1 c! d0 g: i9 l
   dim z as double
0 g% ^- ^6 ~8 f2 l+ o% g  
' z) b" a8 `! s  '读取txt数据,并进入绘图模式
5 z$ u: n1 n. x+ r& @8 ^/ o  `    open "f:\study\sw-ercikaifa\test\test3.txt" for input as #1
2 c' ?, w3 m4 n part.insertsketch2 true
9 q1 `4 ]1 [' o5 p& t7 u '逐行得出字符串格式,分割行数据,拆分成三个数字( u. t& r' j- u5 }6 ]9 r
do while not eof(1)+ l5 w7 j+ ^( a9 ?9 {
  line input #1, textline; b7 k5 b$ f. i5 z4 b% ?4 g( {
    dim point as variant
- h) t) ?% y% m: f6 i; n) v    point = split(textline, " ")
6 i7 i$ t$ t& i/ j; s6 x0 c    x = val(point(0)) / 1000
" ^8 s1 b0 a) y6 c6 z    y = val(point(1)) / 1000
# a& y, e' a9 k% q4 m    z = val(point(2)) / 10004 l/ g0 u) i' n0 d7 ~
    part.createpoint2 x, y, z& b2 p/ w! z4 l& z1 g( y; c' u6 {& s
    part.clearselection2 true
  x+ t" c) ^0 @0 k( ~    part.setpickmode8 v# e% v8 b5 v3 @. f6 b
loop1 b. t- ]0 m8 g. v7 ^+ [6 g+ e
close #1
) y. j7 |  q; lend sub
0 r/ r( g/ b% g( y% \3 }* t1 g( y- r. w. v4 `+ s
运行时发现,最终只绘出5个点而不是12个点!
3 m2 a9 p; c1 i$ ^/ n) j1 y3 t不知道出了什么问题。
6 m# o+ }! u  r$ m2 v小弟是个vb新手,调试时发现x,y,z的值实时也发生了变化;# \6 {0 \0 ]7 `. y# ]. j
但sw环境中却会出现跳一行才绘点的情况(即每两行只绘一个点),7 g4 z: r  g$ w9 z) v7 _6 l
为什么会出现漏点的情况呢?费解呀,亲娘来......
补充一下:" ]& h$ u. ?* c; o* {( o
今天上午我换了一台电脑调试,+ c- ~# p, z# p) g  a8 x4 j
却发现可以实现,
. x( x/ {, a) m; n( b2 h! y回来后用自己机器却还是错误(漏点),
0 ~0 b  t. d. o( t# z同一段代码,为什么在两台机器上会运行出不同的结果?
怎么没人回我呢?* o2 u# i- a# y: c
我今天好像找到了个解决的办法,将4 y( p2 `' t- q, u" `
insertsketch2 true 改为insert3dsketch,问题暂时就没有了。/ |3 p+ j% d0 e8 k
不知道以后还会不会出现这个问题。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|几何尺寸与公差论坛

GMT+8, 2024-12-22 13:11 , Processed in 0.035345 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

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