找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 4043|回复: 5

solidworks自己录制的VBA代码有问题

[复制链接]
发表于 2019-6-8 14:12:22 | 显示全部楼层 |阅读模式
本帖最后由 jinjunbai 于 2019-6-8 14:17 编辑 ' Z3 U* e- f$ w4 K

4 s) d  U' `# `' `+ l! }7 ?4 X, O今天尝试用VBA代码完成一个图形的绘制,发现程序自己录制的VBA执行都有问题,比如基准面,绘图的时候设置好,VBA中执行出来就没有了,请高手帮忙解决一下; a: z/ t% F6 {% v+ L
0 D/ |. U* ~9 v1 A
代码如下:# Q  f; b" C3 A9 Q7 j9 q
' ******************************************************************************. P6 @: P$ |" Z
' C:\Users\admin\AppData\Local\Temp\swx11724\Macro1.swb - macro recorded on 06/08/19 by admin
1 F8 z, f* y: }2 O" P: f' ******************************************************************************% F, h' h& k* h: l2 O
Dim swApp As Object0 @( H0 A' _4 m5 X% Q
+ R% [* a! O* ?
Dim Part As Object$ k8 Q/ S' E. h0 N. i, m
Dim boolstatus As Boolean% G  O0 q$ o# f6 m1 V
Dim longstatus As Long, longwarnings As Long5 |; E# Q, h- n( l
& G( z6 y' U& P# {+ l" O
Sub main()
. o- g: ~) B% Q, u5 B  A
; _/ J& u+ b  D$ T& \: E1 nSet swApp = Application.SldWorks# o7 ?  B' Z: `6 C+ ?) k
0 X- y; }9 ?. g, R

! ?! a" A/ c4 _& z" u' New Document
6 `, n8 r$ r$ B9 A9 i. n! Z0 uDim swSheetWidth As Double8 \2 R' s& m" u5 L0 S$ K4 M+ Z
swSheetWidth = 0
3 `3 }- ?# V% d6 v5 i5 C7 HDim swSheetHeight As Double- E/ V2 q& J# W
swSheetHeight = 0
) @) e5 s7 Z1 a/ X4 o4 USet Part = swApp.NewDocument("C:\ProgramData\SolidWorks\SOLIDWORKS 2018\templates\gb_part.prtdot", 0, swSheetWidth, swSheetHeight)' B5 d: r- R9 M* y/ f
Dim swPart As PartDoc0 U5 [& ]! b/ A9 x: q7 x
Set swPart = Part$ T7 S5 l* n( O$ y9 M
swApp.ActivateDoc2 "零件1", False, longstatus& l9 R3 H2 G3 F4 |
Set Part = swApp.ActiveDoc
/ D$ t8 V& e5 t, |& RDim myModelView As Object# M  l% x$ [  r) \4 @2 b! M
Set myModelView = Part.ActiveView
$ o% }0 i4 M  q: g8 b% DmyModelView.FrameState = swWindowState_e.swWindowMaximized
; G6 s: n: @  w9 L# L) x9 _boolstatus = Part.Extension.SelectByID2("注解", "DCABINET", 0, 0, 0, False, 0, Nothing, 0)! \5 ?" U. ?. j) B7 u& y
boolstatus = Part.Extension.SelectByID2("前视基准面", "PLANE", 0, 0, 0, False, 0, Nothing, 0)5 P5 @$ l1 N3 @& @0 S: `1 z9 p' r
Part.SketchManager.InsertSketch True0 q* o. j7 ], Y
Part.ClearSelection2 True# O2 U( b0 E7 w' J* W
boolstatus = Part.Extension.SetUserPreferenceToggle(swUserPreferenceToggle_e.swSketchAddConstToRectEntity, swUserPreferenceOption_e.swDetailingNoOptionSpecified, False)
- ~1 D1 p9 d9 S8 v* Q) ^boolstatus = Part.Extension.SetUserPreferenceToggle(swUserPreferenceToggle_e.swSketchAddConstLineDiagonalType, swUserPreferenceOption_e.swDetailingNoOptionSpecified, True)6 g, O5 }; {* o+ K. c4 E
Dim vSkLines As Variant# e8 T9 l4 Z7 D, \! _0 u
vSkLines = Part.SketchManager.CreateCornerRectangle(-4.03305583756345E-02, 3.97460575296108E-02, 0, 6.89710998307952E-02, -0.03010179357022, 0)4 h3 Z/ K& V$ y; f5 ^( W0 H

* O) c# }: E4 W' Named View1 S2 r3 I( J- n
Part.ShowNamedView2 "*上下二等角轴测", 83 k' k, }1 B) t- ^, }+ _4 F4 ^- ^
Part.ViewZoomtofit2
0 A' ^% J: j* @# Y5 q4 Q1 lDim myFeature As Object
4 H0 ^! p1 `5 P: p& |/ }" E2 H* |Set myFeature = Part.FeatureManager.FeatureExtrusion2(True, False, False, 0, 0, 0.01, 0.01, False, False, False, False, 1.74532925199433E-02, 1.74532925199433E-02, False, False, False, False, True, True, True, 0, 0, False)* M+ ~& o. Z  T6 |
Part.SelectionManager.EnableContourSelection = False
5 m- R& B( q  \  kboolstatus = Part.Extension.SelectByRay(-1.52826298517539E-02, 1.47929888240128E-02, 9.99999999999091E-03, -0.400036026779312, -0.515038074910024, -0.758094294050284, 5.70826886238244E-04, 2, False, 0, 0)
" f. Z$ O& [; X5 ?' sPart.ClearSelection2 True
, k0 v! |6 C' Z% tboolstatus = Part.Extension.SelectByRay(-1.52826298517539E-02, 1.47929888240128E-02, 9.99999999999091E-03, -0.400036026779312, -0.515038074910024, -0.758094294050284, 5.70826886238244E-04, 2, False, 0, 0)8 T2 D* d% B! h; C: A8 D2 g7 T
Part.ClearSelection2 True. b1 L# a6 Q0 g' h
boolstatus = Part.Extension.SelectByID2("前视基准面", "PLANE", 0, 0, 0, False, 0, Nothing, 0)$ H' L, T1 h9 [! Y+ R8 t
boolstatus = Part.Extension.SelectByID2("前视基准面", "PLANE", 0, 0, 0, True, 0, Nothing, 0)
0 D! T. l8 P& a5 W' ^, qDim myRefPlane As Object$ T/ q+ ^6 T4 k, b) k8 w3 s
Set myRefPlane = Part.FeatureManager.InsertRefPlane(8, 0.01, 0, 0, 0, 0)8 _' M3 r2 L2 \# L+ R" ?% \
Part.ClearSelection2 True
: u* }7 B. H7 e5 Yboolstatus = Part.Extension.SelectByID2("前视基准面", "PLANE", 0, 0, 0, False, 0, Nothing, 0)3 N3 [# X6 d, Y0 x, c8 E) p
Part.ClearSelection2 True
" B* s! o; W% V3 t/ ]* a+ C: \" p  lPart.ClearSelection2 True# v* C7 Q6 a/ F: E# P( [
boolstatus = Part.Extension.SetUserPreferenceToggle(swUserPreferenceToggle_e.swSketchAddConstToRectEntity, swUserPreferenceOption_e.swDetailingNoOptionSpecified, False)6 G1 z$ L4 t, b( U+ U& q9 G
boolstatus = Part.Extension.SetUserPreferenceToggle(swUserPreferenceToggle_e.swSketchAddConstLineDiagonalType, swUserPreferenceOption_e.swDetailingNoOptionSpecified, True)
5 J7 h2 J0 g( z* v+ HvSkLines = Part.SketchManager.CreateCornerRectangle(-1.26249913529932E-02, 1.98473013094258E-02, 0, 4.43244050501335E-02, -1.64793375533918E-02, 0)3 O5 h" B9 e9 h$ K7 W
Set myFeature = Part.FeatureManager.FeatureExtrusion2(True, False, False, 0, 0, 0.01, 0.01, False, False, False, False, 1.74532925199433E-02, 1.74532925199433E-02, False, False, False, False, True, True, True, 0, 0, False)0 q/ n: D, Z$ d( l
Part.SelectionManager.EnableContourSelection = False
, V4 `6 h4 P9 VEnd Sub
# t, i- x% d$ t! _% q2 I% b) W% S5 V. ^9 j& H% y/ D
; g+ A, E/ [5 T) d3 d/ P" F

本帖子中包含更多资源

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

×
回复

使用道具 举报

发表于 2019-6-8 16:00:55 | 显示全部楼层
SW录制的部分动作不会记录,需要对二次开发的语句有一定了解才能修改,建议看一下API帮助文档入门后再提问。
发表于 2019-6-8 16:29:15 | 显示全部楼层
先说清楚自己想实现什么动作- \! V& i: M+ b$ M+ Q4 x
 楼主| 发表于 2019-6-8 16:49:25 | 显示全部楼层
问题已经搞定
发表于 2019-6-8 20:20:08 | 显示全部楼层
这样都是C语言吗
发表于 2019-6-8 22:28:52 | 显示全部楼层
进阶功能^_^
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Archiver|手机版|小黑屋|机械社区 ( 京ICP备10217105号-1,京ICP证050210号,浙公网安备33038202004372号 )

GMT+8, 2025-6-22 17:19 , Processed in 0.071394 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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