QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 2416|回复: 13
收起左侧

[已解决] 求解! 有图有程序 二次开发的 泪奔。。。为什么走程序的时候点不对

[复制链接]
发表于 2014-4-19 12:11:28 | 显示全部楼层 |阅读模式 来自: 中国浙江杭州

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

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

x
本帖最后由 work_wonders 于 2014-4-20 12:32 编辑
* N& Q' C1 y# V; ]: F* ]1 C$ m
% x* j% R5 S5 G5 [5 K‘各路大神走过路过不要错过
9 f* `5 w. A! d+ i0 LDim swApp As Object& X/ T, t7 M. W" Q5 L1 E! M6 |
  b% J5 R' w* l2 o$ w3 E& b" h0 q5 W
Dim Part As Object+ G0 V" |1 F+ V2 ?
Dim boolstatus As Boolean
  t5 B* a) T7 h2 z5 c0 W4 j" EDim longstatus As Long, longwarnings As Long
1 `( Y5 Z* \, x( g0 t) {Dim P1X, P2X, P3X, P4X, P5X, P6X, P7X, P8X, P9X, P1Y, P2Y, P3Y, P4Y, P5Y, P6Y, P7Y, P8Y, P9Y, H1, D1, m As Double& A9 F: t3 s8 ~6 ]; {
5 i- U# e7 s6 N! a2 b
Sub main()7 f+ I4 ~# [* `+ f) y% x! e

5 K4 D+ @( @! F, L- I- HSet swApp = _
# Q( F. k# M! I7 k, z8 aApplication.SldWorks1 O; K* D& b: ^3 H
' A1 c4 q6 X" y7 }9 X+ D
Set Part = swApp.NewDocument("C:\ProgramData\SolidWorks\SolidWorks 2014\templates\gb_part.prtdot", 0, 0, 0)
% I5 ?& v: t2 b, N9 q" r( NswApp.ActivateDoc2 "零件5", False, longstatus
/ @1 b) A6 M$ Q/ ~5 ^9 i* xSet Part = swApp.ActiveDoc8 z4 s. R) j. c% l
Set Part = swApp.ActiveDoc- F& m! \! J8 `
m = 10 / 1000; o3 G: f$ W! O7 c
P2X = -0.35
) k" a/ g/ Y/ o1 L  B, zP2Y = 0.549 t/ i) o2 g; i7 R% p
P3X = -0.35
( p- Y) W2 _/ X9 t; c( Z8 HP3Y = 0.556 L. _% x+ Z' x. |+ g5 o) f% J
P4X = -0.153 C& A/ j( o) E9 g+ u
P4Y = 0.55
) F/ ^+ C% g9 p1 }/ @P5X = 0
1 U0 P; f' ^, M, j0 `/ {! y( eP5Y = 0.4
& d5 V% |+ M; F( W! R$ ]) i3 F* `P6X = 0; R6 K7 U' X; `& c# ^6 y& T
P6Y = 0
9 t4 z  ]6 ^) _# G. w8 b% HP7X = -0.5& u$ @6 N5 r# \/ G4 \# k" E
P7Y = -0.5
, V. z7 L5 J& C4 `
5 J7 |) e7 T) V- ^6 |$ |, tPart.SketchManager.InsertSketch True' s: p( N, ?. U6 V* W7 S! [' [
boolstatus = Part.Extension.SelectByID2("前视基准面", "PLANE", -6.19713809539345E-02, 5.83954772973056E-02, 9.08449996078081E-03, False, 0, Nothing, 0)1 s5 p8 j6 Z. N( b' _
Part.ClearSelection2 True
2 l5 \3 ?. O3 f6 j0 rDim skSegment As Object4 T  c) u- H$ G1 N
Set skSegment = Part.SketchManager.CreateLine(-0.11, 0.59, 0#, P2X, 0.59, 0#)8 G4 Q/ a& d2 a7 x+ n
Set skSegment = Part.SketchManager.CreateLine(P2X, 0.59, 0#, P3X, P3Y, 0#)
4 Q8 S7 S6 J' R: qSet skSegment = Part.SketchManager.CreateLine(P3X, P3Y, 0#, P4X, P4Y, 0#)
9 v8 m9 k& P8 K5 w0 {9 SSet skSegment = Part.SketchManager.CreateLine(P4X, P4Y, 0#, P5X, P5Y, 0#)6 j2 e! ^" n* v/ u
Set skSegment = Part.SketchManager.CreateLine(P5X, P5Y, 0#, P6X, P6Y, 0#)
0 ^: f8 ]+ q- O, H/ j  D* g6 \Set skSegment = Part.SketchManager.CreateLine(P6X, P6Y, 0#, P7X, P7Y, 0#)8 z  ?2 ]: t) r$ _( X. a
Set skSegment = Part.SketchManager.CreateLine(P7X, P7Y, 0#, -0.494, -0.506, 0#)
0 P0 I- ~& {: a3 Z+ XSet skSegment = Part.SketchManager.CreateLine(-0.494, -0.506, 0#, -0.436, -0.448, 0#)( J; o* |9 V" M' T' Q
Set skSegment = Part.SketchManager.CreateLine(-0.436, -0.448, 0#, -0.426, -0.458, 0#)9 a' Y4 h  ~7 h4 K1 }
Set skSegment = Part.SketchManager.CreateLine(-0.426, -0.458, 0#, -0.423, -0.455, 0#)
* {5 V! _; o- i" aSet skSegment = Part.SketchManager.CreateLine(-0.423, -0.455, 0#, -0.428, -0.45, 0#)9 w! x- H* I+ K' a+ o
Set skSegment = Part.SketchManager.CreateLine(-0.428, -0.45, 0#, -0.423, -0.445, 0#)
; @: C! S: s& a  L
; r) h" q' b5 h# SSet skSegment = Part.SketchManager.CreateLine(-0.423, -0.445, 0#, -0.426, -0.442, 0#)+ ?+ _# w# D+ J. f

7 H! I5 F8 ]' i; |4 q! U5 gSet skSegment = Part.SketchManager.CreateArc(-0.424, -0.44, 0#, -0.426, -0.442, 0#, -0.426, -0.438, 0#, -1)2 Y  B* X2 Z# N3 e" s" H" [7 \3 r

) h  [" i* V; |$ [3 {& L% KSet skSegment = Part.SketchManager.CreateLine(-0.426, -0.438, 0#, -0.411, -0.423, 0#)
4 _# b: X1 @* u$ M
% D* J. K: s/ e: z; WSet skSegment = Part.SketchManager.CreateArc(-0.409, -0.425, 0#, -0.411, -0.423, 0#, -0.407, -0.423, 0#, -1)
! g8 f* u2 s( V
1 I; I' m9 \; K5 H* jSet skSegment = Part.SketchManager.CreateLine(-0.407, -0.423, 0#, -0.404, -0.426, 0#)
) }1 L3 s+ G; j) N* X& ]( G( ^Set skSegment = Part.SketchManager.CreateLine(-0.404, -0.426, 0#, -0.399, -0.421, 0#)
- T0 S8 O# X4 ^6 zSet skSegment = Part.SketchManager.CreateLine(-0.399, -0.421, 0#, -0.394, -0.426, 0#)
% _3 r) H* v3 R% D$ D9 G/ a( B6 cSet skSegment = Part.SketchManager.CreateLine(-0.394, -0.426, 0#, -0.391, -0.423, 0#)1 E( {6 Z$ r/ A3 e
Set skSegment = Part.SketchManager.CreateLine(-0.391, -0.423, 0#, -0.397, -0.417, 0#)
- ?5 N% k, S: G! z- D/ x- Y. A, c; f5 v- M
Set skSegment = Part.SketchManager.CreateLine(-0.397, -0.417, 0#, -0.172, -0.192, 0#)/ E5 J, j' i0 j; ^
Set skSegment = Part.SketchManager.CreateLine(-0.172, -0.192, 0#, -0.166, -0.198, 0#)
1 M- I6 Y7 H; C- n) D' {6 |# XSet skSegment = Part.SketchManager.CreateLine(-0.166, -0.198, 0#, -0.163, -0.195, 0#): w  b$ }" a5 b% [2 ~) R. K6 R
Set skSegment = Part.SketchManager.CreateLine(-0.163, -0.195, 0#, -0.168, -0.19, 0#)6 Q' l+ L9 @  \2 Y6 n" |
Part.ClearSelection2 True$ |) {& S, d/ _7 I
Part.ShowNamedView2 "*前视", 1
! x! G' g# l2 r4 Z8 `2 USet skSegment = Part.SketchManager.CreateLine(-0.168, -0.19, 0#, -0.163, -0.185, 0#)9 P" F3 }* W5 v, ^( n9 ]( p# D

& T  r+ C( l/ tSet skSegment = Part.SketchManager.CreateLine(-0.163, -0.185, 0#, -0.166, -0.182, 0#)/ x5 W) h% ]4 J% m
Part.ClearSelection2 True, Q( s5 V' Q; @  i
Set skSegment = Part.SketchManager.CreateArc(-0.164, -0.18, 0#, -0.166, -0.182, 0#, -0.166, -0.178, 0#, -1)0 E: M4 x' x' X
Part.ClearSelection2 True
. u# |- i/ K* x' ?0 OSet skSegment = Part.SketchManager.CreateLine(-0.166, -0.178, 0#, -0.151, -0.163, 0#)
! h3 ?6 O$ G# \  u& VPart.ClearSelection2 True1 }4 }7 m; ^  e( E
Set skSegment = Part.SketchManager.CreateArc(-0.149, -0.165, 0#, -0.151, -0.163, 0#, -0.147, -0.163, 0#, -1)+ m  r0 o! O+ Y! D7 ^+ E* @6 X) I4 w
Part.ClearSelection2 True$ N6 ~% I4 [) c# x
Part.ShowNamedView2 "*前视", 1) K2 K3 m; {9 z! h; h1 A2 Q
Set skSegment = Part.SketchManager.CreateLine(-0.147, -0.163, 0#, -0.144, -0.166, 0#)+ m) y3 m+ u: ?" y# f1 V7 }; X
Set skSegment = Part.SketchManager.CreateLine(-0.144, -0.166, 0#, -0.139, -0.161, 0#)2 v8 F) O6 _5 L, `2 q7 K
Set skSegment = Part.SketchManager.CreateLine(-0.139, -0.161, 0#, -0.134, -0.166, 0#)
* H! s5 _6 Y: Y7 N3 S8 h$ O1 w1 C' y6 BSet skSegment = Part.SketchManager.CreateLine(-0.134, -0.166, 0#, -0.119, -0.151, 0#)
2 r  R9 C  |3 Y  ?" J$ J3 C0 CSet skSegment = Part.SketchManager.CreateLine(-0.119, -0.151, 0#, -0.118, -0.152, 0#)4 ]) G! g; B: t# \. X  Q
Set skSegment = Part.SketchManager.CreateLine(-0.118, -0.152, 0#, -0.113, -0.147, 0#)
. s6 W6 \* F" G- a1 m: |Set skSegment = Part.SketchManager.CreateLine(-0.113, -0.147, 0#, -0.108, -0.152, 0#)* [1 @& a7 W, k" N: G! [- f% [6 F+ N
Set skSegment = Part.SketchManager.CreateLine(-0.108, -0.152, 0#, -0.105, -0.149, 0#): ~6 I; A7 c! C. `6 k+ s; O; l) q
Part.ClearSelection2 True: V: y" n) Y) ]2 \$ C: }
Set skSegment = Part.SketchManager.CreateArc(-0.103, -0.151, 0#, -0.105, -0.149, 0#, -0.101, -0.149, 0#, -1)( Q+ w: y& s4 J5 o2 y0 L5 Z
Part.ClearSelection2 True
% A4 N& ?7 O2 iSet skSegment = Part.SketchManager.CreateLine(-0.101, -0.149, 0#, -0.086, -0.164, 0#)" T* h/ A: ^, {
Part.ClearSelection2 True; _8 l; M# {$ b# l0 i2 w6 @; _
Set skSegment = Part.SketchManager.CreateArc(-0.088, -0.166, 0#, -0.086, -0.164, 0#, -0.086, -0.168, 0#, -1)" m1 i$ ^. ]. y- K3 B- t1 V6 K
Part.ClearSelection2 True
" ^1 \) v& g+ I' O7 ^2 E2 {7 XPart.ShowNamedView2 "*前视", 12 R/ h; T; Z# v9 N3 J7 T. d- t
Set skSegment = Part.SketchManager.CreateLine(-0.086, -0.168, 0#, -0.089, -0.171, 0#)9 L, z' X6 n8 m4 [' O. @
Set skSegment = Part.SketchManager.CreateLine(-0.089, -0.171, 0#, -0.084, -0.176, 0#)* |: ]/ x1 a- f& y( H+ {$ l9 i
Set skSegment = Part.SketchManager.CreateLine(-0.084, -0.176, 0#, -0.089, -0.181, 0#)
" M- I, \( f5 g/ MSet skSegment = Part.SketchManager.CreateLine(-0.089, -0.181, 0#, -0.086, -0.184, 0#)
8 @+ H/ a# @7 S9 VPart.ClearSelection2 True/ P" p/ F5 y$ ~" a0 k
Set skSegment = Part.SketchManager.CreateLine(-0.086, -0.184, 0#, 0.064, -0.034, 0#)' w0 v9 u, S/ u( S6 R' L
Part.ClearSelection2 True. d/ R4 t; P$ Q8 D1 o3 V9 I  A
Set skSegment = Part.SketchManager.CreateLine(0.064, -0.034, 0#, 0.064, 0.416, 0#)
  A6 o5 G2 {; ^4 C5 n- i6 ESet skSegment = Part.SketchManager.CreateLine(0.064, 0.416, 0#, -0.11, 0.59, 0#)4 J& ~( w8 `) f
Part.ClearSelection2 True
3 ^! u" u, L: k" w; [% XPart.ShowNamedView2 "*前视", 1
3 F- W8 }( l) A6 J+ ~; ~# w; d/ v; i4 z/ dPart.ShowNamedView2 "*上下二等角轴测", 8
* H0 n( s8 x1 E9 v* q' ZPart.ClearSelection2 True
* ]: W# ]7 z, V& \9 MDim myFeature As Object7 \% T: _. Q6 H* ?
Set myFeature = Part.FeatureManager.FeatureExtrusion2(True, False, False, 0, 0, m, 0.01, False, False, False, False, 1.74532925199433E-02, 1.74532925199433E-02, False, False, False, False, True, True, True, 0, 0, False)* x! B$ n9 I  c" K
Part.SelectionManager.EnableContourSelection = False4 [, E4 I  {( u9 D0 K0 Y
End Sub! R8 f2 X" M2 k% [. O
 楼主| 发表于 2014-4-19 12:12:56 | 显示全部楼层 来自: 中国浙江杭州
 楼主| 发表于 2014-4-19 12:14:03 | 显示全部楼层 来自: 中国浙江杭州
这个是程序走出来的SOlidworks 主要错误的地方 求大神指点啊
123.jpg
发表于 2014-4-19 15:49:57 | 显示全部楼层 来自: 中国江苏无锡
本帖最后由 votasee 于 2014-4-19 15:51 编辑
# J7 l  z8 m- e6 R! D  o
3 u) E# Y3 R3 a; g" m

论坛代码格式

论坛代码格式

* D' @4 @: T' ~" L& [学习一下论坛使用方法,并不复杂.
) x# p/ Y2 ?3 i' j& V( ~. W
% T4 a/ x0 ^* m+ m其次,如果你直接用程序中的Line坐标点的话,是会发生这种情况的..
# X2 `4 k0 O5 c  Y0 B; U' c* d2 Q可能是solidworks一些潜在的BUG吧.也或者是没找到更好的办法...+ ?5 M" f$ F- a; y
如果一定要用,在每条LINE语句中,插入一条ViewZoomtofit2 语句.
1 z, g! y( Q' q, ]" }. c* C这样也可以解决走线歪斜的情况...想信你应该懂的...
1 I9 M( t# {6 _& Q$ {& }
发表于 2014-4-19 16:35:11 | 显示全部楼层 来自: 中国辽宁丹东
本帖最后由 qiminger 于 2014-4-19 16:38 编辑 + ^3 Y3 R6 f1 c% O1 m, ^; g
& K8 [8 o4 G$ S7 R3 I3 j
看来问题都出在过渡圆弧上,录制宏时圆弧处不要用直线来拐,先画成直角,最后用倒圆角,看能行不?
* K! ^) x& ^- g$ r0 R& G你上面的代码复制用不了的,最好将宏文件压缩上传。
 楼主| 发表于 2014-4-19 17:05:46 | 显示全部楼层 来自: 中国浙江杭州
@qiminger  大神给看下  重点 我逐步走是可以实现的 一起走就错了

立版实验 - 副本-半成品.rar

12.12 KB, 下载次数: 2

 楼主| 发表于 2014-4-19 17:06:23 | 显示全部楼层 来自: 中国浙江杭州
qiminger 发表于 2014-4-19 16:35 static/image/common/back.gif1 K! e! u5 V+ p; |
看来问题都出在过渡圆弧上,录制宏时圆弧处不要用直线来拐,先画成直角,最后用倒圆角,看能行不?+ l' K) e' h2 I. T+ ^$ [9 Q9 B
你上面的 ...

7 n5 _. u9 j: E. v3 Q大牛附件上传了 有空给瞧下哈 谢过了
发表于 2014-4-19 17:45:10 | 显示全部楼层 来自: 中国香港
本帖最后由 Francis 于 2014-4-19 17:46 编辑 - n. I' A4 H; u# A5 B' t. ~

) y- v* h- s9 n絕對不是程序錯誤(BUG), 是這段宏在繪畫圖元的時候, 捕捉其他物件或圖元而引起錯誤.
* W1 e. I9 X, H3 i3 K$ o, G. v/ m7 K7 x& T9 i" H: l
只要在每次插入草圖後加入"Part.SetAddToDB (True)", 讓建立的圖元直接加入到資料庫即可解決.
 楼主| 发表于 2014-4-19 18:53:02 | 显示全部楼层 来自: 中国浙江杭州
Francis 发表于 2014-4-19 17:45 static/image/common/back.gif) @% T4 u9 B' o; _
絕對不是程序錯誤(BUG), 是這段宏在繪畫圖元的時候, 捕捉其他物件或圖元而引起錯誤.
6 d3 U" ?0 @3 M& }; ^6 [/ c; R7 s1 |3 G) |- {4 J
只要在每次插入草圖 ...

9 f4 f2 c) S! ?; T  C, |感谢大哥  成功实现 谢谢谢谢
 楼主| 发表于 2014-4-19 18:59:29 | 显示全部楼层 来自: 中国浙江杭州
Francis 发表于 2014-4-19 17:45 static/image/common/back.gif7 m( V5 g0 j4 P9 Z# N  j- a
絕對不是程序錯誤(BUG), 是這段宏在繪畫圖元的時候, 捕捉其他物件或圖元而引起錯誤.
+ S* y; ^. `/ J; h  ~
3 j% b7 `5 ~0 d$ s/ A9 B只要在每次插入草圖 ...

" x( j* j8 L0 |/ I% [我还有个问题 麻烦下大神,  为什么我宏录制的时候 边线发蓝这个操作录不下来
 楼主| 发表于 2014-4-19 19:09:24 | 显示全部楼层 来自: 中国浙江杭州
votasee 发表于 2014-4-19 15:49 static/image/common/back.gif
3 u: u, R. R/ `$ N' \4 ^学习一下论坛使用方法,并不复杂.
0 S' t$ ^  V% n6 Q$ }
; {! T9 {* Q! `5 |- a; e其次,如果你直接用程序中的Line坐标点的话,是会发生这种情况的..
* G  e! j* V0 k0 o9 ], \7 N. N# W1 s
怎么把这个帮助改成已解决
发表于 2014-4-19 21:13:53 | 显示全部楼层 来自: 中国台湾
work_wonders 发表于 2014-4-19 19:09 static/image/common/back.gif
' s% E: n- o" j6 {% o% l怎么把这个帮助改成已解决
7 {1 W- l' G  \$ V8 q: l
到開帖一樓去編輯,把標題欄選擇「已解決」即可。
发表于 2014-5-2 15:07:00 | 显示全部楼层 来自: 中国山东泰安
Francis 发表于 2014-4-19 17:45 static/image/common/back.gif) V6 b  n# L! s# i
絕對不是程序錯誤(BUG), 是這段宏在繪畫圖元的時候, 捕捉其他物件或圖元而引起錯誤.
. |8 |4 X/ b3 x% @( k0 T
. A/ t# Z( t( B) {. b& ^5 L只要在每次插入草圖 ...

% j2 N& Q/ I) ^3 T) N, Y' d9 {francis大师,您专门做sw的二次开发吗,我这有些案例需要做二次开发,希望合作一下
发表于 2014-5-2 19:09:42 | 显示全部楼层 来自: 中国香港
806569126 发表于 2014-5-2 15:07 static/image/common/back.gif# N1 p! y% P6 _5 c  {: m4 ~, a
francis大师,您专门做sw的二次开发吗,我这有些案例需要做二次开发,希望合作一下

: K+ g( d8 m( s& W4 K不是大師也不專門, 業餘興趣而已, 若談到合作, 可能會讓您失望.
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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