找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 5690|回复: 13

求助,如何用代码添加全局变量?

[复制链接]
发表于 2022-5-9 15:56:42 | 显示全部楼层 |阅读模式
如下图片,如何用代码实现添加全局变量:A2="名称"? 其中”名称”是自定义属性。
; n+ N: G) p/ g1 O6 i; [) S1 f

7 H# F# I2 }  W" h, z- {4 B6 V) I! J  U1 n6 W: l

本帖子中包含更多资源

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

×

评分

参与人数 1威望 +1 收起 理由
喂我袋盐 + 1 热心助人,专业精湛!

查看全部评分

回复

使用道具 举报

发表于 2022-5-10 08:16:25 | 显示全部楼层
首先,方程式只能是数值,这很重要。
) A% t* h6 I" L; Q那么,你自定义属性也得整个数值的,就简单了。
发表于 2022-5-10 08:26:43 | 显示全部楼层
+ q/ a$ b! I0 K! q5 F6 i

本帖子中包含更多资源

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

×

点评

全局变量的“值”是数值,用代码可以自动添加。但是,变量的值引用自定义属性里面的名称字段,用代码没搞出来。  发表于 2022-5-11 14:34
变量的“值”一定要是数值,这很重要。至于你说“值”是文字型的,我觉得对于会二次开发的,也都不是事。毕竟汉字,字符对于计算机来说,都是数值。提取数值,再通过某种方式转换回去,肯定可以做到一一对应。  发表于 2022-5-10 08:55
属性那里选数值不是必须的,你那里选文字,然后后边栏里填个数。方程式那边引用这一项属性,出来的还是个数,不影响。 楼主是想用方程式引用具体的文字数据,那确实不可能  发表于 2022-5-10 08:37
发表于 2022-5-10 09:36:00 | 显示全部楼层
你的目的是什么呢?自定义属性可以直接用代码Part.CustomInfo2("", "名称")赋值
发表于 2022-5-10 10:10:14 | 显示全部楼层
方程式只支持纯数值的自定义属性调用,如果调用自定义属性的文本值直接在属性调用即可2 J/ w7 V4 m, m+ \: p! a  I
如图:
" G4 a9 m& L4 y' ]+ b  p
% H3 J+ [8 V9 @  m/ @' }
4 x0 K3 k. M  B% ^. M

本帖子中包含更多资源

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

×
 楼主| 发表于 2022-5-11 11:05:30 | 显示全部楼层
5 C6 h$ ^0 ~; B! V4 M) E' {
我的主要问题是如何用宏代码实现自动添加?) [$ N  W# q. y' E, {
 楼主| 发表于 2022-5-11 16:41:34 | 显示全部楼层
swapi 自带的例子,swEquationMgr.Add3 有错?/ l7 k7 W4 j5 ^& o8 H8 j
例子如下:
: \- G/ d1 A! L: s$ ^- I$ p3 BOption Explicit
8 s8 T. A& n' j; ?; XSub main()
1 ]' N& d; s3 q, W% \( v
5 ?8 l1 x* w) d4 Y    Dim SwApp           As SldWorks.SldWorks
' g+ v% \) z! f8 K( C" p+ f    Dim Part            As SldWorks.ModelDoc2, _/ \8 u+ r, l9 [% h2 a
    Dim swEquationMgr   As SldWorks.EquationMgr
3 y1 v% d/ {& [    Dim longEquation    As Long0 |) H* T) ~$ h

6 u' C" ?1 U/ G4 w1 L/ S" s  j& a8 B6 n' z, `7 F  l# w
    Set SwApp = Application.SldWorks# n3 I; ~7 b/ x) Q
    Set Part = SwApp.ActiveDoc
5 p4 |, I6 i# P% q4 P- l5 y  }6 s  e9 ^" s- ]' E2 @
    Set swEquationMgr = Part.GetEquationMgr( m2 x6 y) J. a; S( |5 t) O
    If swEquationMgr Is Nothing Then ErrorMsg SwApp, "Failed to get the equation manager"2 R) C) y2 `, W! p6 G: t
0 D* A; {4 ?9 U: u+ z, K1 X) D

, o9 l$ [8 G* R# b  W6 G1 m& L; G    'Add a global variable assignment at index, 0, to all configurations
1 J  @0 Z- L6 w9 y    longEquation = swEquationMgr.Add3(0, """A"" = 2in", True, swAllConfiguration, Empty)# N9 z0 o) {( Q* U' j- j# d
    If longEquation <> 0 Then ErrorMsg SwApp, "Failed to add a global variable assignment"* F0 I! R; f8 M& _0 o

! r' Z6 r! |, p' I) A9 x0 f2 m+ e& h6 `# N* t& G& i
    'Add a dimension equation at index, 1, to all configurations  J$ P+ F/ s* x. H+ m) h
    longEquation = swEquationMgr.Add3(1, """D1@Boss-Extrude1"" = 0.05in", True, swAllConfiguration, Empty)
0 ?3 B: `. E$ j" }  \  ?2 o    If longEquation <> 1 Then ErrorMsg SwApp, "Failed to add a dimension equation"9 t  V( Y0 [' S( H0 Q$ B" b

* B* L  r- ?( Z7 A" i8 @
7 g1 M$ O  V4 |. Y3 |% B$ r  `$ W    'Modify dimension equation at index, 1, in all configurations
6 M/ R& y/ ]' O/ K" W, t" Q    longEquation = swEquationMgr.SetEquationAndConfigurationOption(1, """D1@Boss-Extrude1"" = 0.07in", swAllConfiguration, Empty)$ E8 U6 [  o3 V1 K* d+ @2 `6 B9 u
    If longEquation <> 1 Then ErrorMsg SwApp, "Failed to modify a dimension equation"9 F: t/ H3 m6 i- ~1 m
2 n( a( R7 R; X6 s# X" M' I

! r: i% o, H7 i* A+ D0 D; w; @+ n2 u: M2 N
End Sub
3 N0 H% B; J2 l  [# Y, u
, {& [2 y0 w, @0 Y; c) a) o
9 K- f: U7 L: c/ n3 s* y* hFunction ErrorMsg(SwApp As Object, Message As String)
6 Y5 P; f8 |9 B5 C4 ~3 b" j% n    SwApp.SendMsgToUser2 Message, 0, 0  S; x4 \7 s/ B# A! x! S) R1 [" N
    SwApp.RecordLine "'*** WARNING - General"0 d( K+ v1 J/ X& ?7 q
    SwApp.RecordLine "'*** " & Message* T+ e( K7 ]; K% u
    SwApp.RecordLine "": o: ?( E1 |9 H% D/ R  \# |
End Function) f0 y' R* ]& ]1 T, Q0 a7 V. k- k

9 i) ^* l+ W$ Y$ H# o3 J" U* e
 楼主| 发表于 2022-5-24 13:53:29 | 显示全部楼层
自定义属性内嵌宏代码:图号代码:    "Part.Extension.CustomPropertyManager("").Set("drawingN",Left(Part.GetTitle, InStr(Part.GetTitle, " ")-1))
7 p7 E+ s+ w4 r名称代码:     Part.Extension.CustomPropertyManager("").Set("partN",Right(Part.GetTitle, Len(Part.GetTitle)-InStr(Part.GetTitle," ")))! l: a( o! l2 k' L. b+ ^
drawingN:4 z! g/ \; y- |
partN:   
9 X, n9 J3 b- ^! R) x2 l- W" t. j! W
! G- h& }9 s8 ]
方程式: 目前只能手动
- V: ]/ [+ d1 R3 _: K; NA1="图号代码"
& j3 c' G1 B# z/ T4 |A2="名称代码"! P% y0 a. {4 k) Y6 n

本帖子中包含更多资源

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

×
 楼主| 发表于 2023-2-22 14:43:18 | 显示全部楼层
Dim swApp As Object
1 O( r: F+ Y. i  L% f3 bSub main(); {2 l9 P. S- [! U8 D
, _9 c& e0 D+ j3 \7 Q
Set swApp = Application.SldWorks& P, [% R9 a& H- A

8 T& |" J* h$ X! ASet doc = swApp.ActiveDoc. }2 q4 s& S( i+ m
  For Each an In doc.GetCustomInfoNames   '删除所有自定义属性3 L- Q1 \( I# A% z8 q
   doc.DeleteCustomInfo an! a7 e- \+ y! }5 R4 M
  Next- }+ c6 c. V: R) Y% [6 K+ i
Dim ST, SG As String4 C7 a* M' A* |$ _
      ST = ""8 m! W( a! q/ R6 H( U; [, ^
      SG = ""
9 j) r6 q( N, I3 _( }, C    If doc.GetType = 1 Then '零件图& K7 c/ c+ B2 h0 v  T% @
5 Q. R$ }" f, r
       ST = "Part.Extension.CustomPropertyManager" + Chr(40) + Chr(34) + Chr(34) + Chr(41) + ".Set" + Chr(40) + Chr(34) + "图号" + Chr(34) + _* q% g; q6 M: r& K  g# y" g
             ",Left" + Chr(40) + "Part.GetTitle, InStr" + Chr(40) + "Part.GetTitle, " + Chr(34) + " " + Chr(34) + Chr(41) + "-1" + Chr(41) + Chr(41)7 R8 I0 X! |+ M" D' a

& R. V8 T1 [- A  S/ m       SG = "Part.Extension.CustomPropertyManager" + Chr(40) + Chr(34) + Chr(34) + Chr(41) + ".Set" + Chr(40) + Chr(34) + "名称" + Chr(34) + ",Right" + _
* |' r# N+ X0 o, d             Chr(40) + "Part.GetTitle, Len" + Chr(40) + "Part.GetTitle" + Chr(41) + "-InStr" + Chr(40) + "Part.GetTitle," + Chr(34) + " " + Chr(34) + Chr(41) + Chr(41) + Chr(41)& v% k% K/ Y; ?- Y
      6 {  f2 V' Y$ o: h8 F. v# u
    ElseIf doc.GetType = 2 Then '装配体
) Y! N" f# t( W. b      4 ~/ X# d* G0 E' b: i: N5 u
       ST = "Assembly.Extension.CustomPropertyManager" + Chr(40) + Chr(34) + Chr(34) + Chr(41) + ".Set" + Chr(40) + Chr(34) + "图号" + Chr(34) + _: o: ]0 H4 _+ N1 @; f$ C
          ",Left" + Chr(40) + "Assembly.GetTitle, InStr" + Chr(40) + "Assembly.GetTitle, " + Chr(34) + " " + Chr(34) + Chr(41) + "-1" + Chr(41) + Chr(41)0 h$ a9 p; {. n0 _# n# Q
, r3 }" T3 N% [7 j
       SG = "Assembly.Extension.CustomPropertyManager" + Chr(40) + Chr(34) + Chr(34) + Chr(41) + ".Set" + Chr(40) + Chr(34) + "名称" + Chr(34) + ",Right" + _" O8 }/ ~8 r4 W- D1 G. ]9 z+ u6 R7 E
           Chr(40) + "Assembly.GetTitle, Len" + Chr(40) + "Assembly.GetTitle" + Chr(41) + "-InStr" + Chr(40) + "Assembly.GetTitle," + Chr(34) + " " + Chr(34) + Chr(41) + Chr(41) + Chr(41)0 A8 D2 S) d) R  X/ J& Z
     End If
8 q3 z" E2 t( c$ w9 G4 e  v      doc.AddCustomInfo3 "", "图号", swCustomInfoText, ""
5 o# }, X. `7 F1 a) t5 H) d1 [; O      doc.AddCustomInfo3 "", "名称", swCustomInfoText, ""' {' T) n. ^* _% U3 V% R
      doc.AddCustomInfo3 "", "图号代码", swCustomInfoText, ST, F* z% ~0 u5 b& ]
      doc.AddCustomInfo3 "", "名称代码", swCustomInfoText, SG% P* A5 i! E) L4 s- l

5 T& \9 h) K5 o& y  `      Set swEquationMgr = doc.GetEquationMgr
5 A- R8 A5 y2 ^, ~1 k5 R3 r' p, Q/ y      swEquationMgr.Add 0, Chr(34) + "A1" + Chr(34) + "=" + Chr(34) + "名称代码" + Chr(34) '添加方程式---"A1"="名称代码"& f% o7 E. ^. {
      swEquationMgr.Add 0, Chr(34) + "A2" + Chr(34) + "=" + Chr(34) + "图号代码" + Chr(34) '添加方程式---"A2"="图号代码"
1 A4 K/ p! }1 s% ]- k6 ^3 V  [' ]( {# ~( t# d: b
3 [. b- K. q! u  J; ]- \% {
End Sub( H7 R3 J( H$ ^9 R

点评

名称规则:图号+空格+名称  发表于 2023-2-22 14:45
可以在模型树直接改名,并更新到相关自定义属性里了  发表于 2023-2-22 14:44
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

GMT+8, 2025-9-19 02:10 , Processed in 0.078249 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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