找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 5491|回复: 13

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

[复制链接]
发表于 2022-5-9 15:56:42 | 显示全部楼层 |阅读模式
如下图片,如何用代码实现添加全局变量:A2="名称"? 其中”名称”是自定义属性。
8 B6 h; \, o* j+ R4 X7 A8 t5 |( Z8 w7 w1 ^0 K9 Y

' _! M/ s" k( }
6 U% F) g" M3 ^* Z5 c; D

本帖子中包含更多资源

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

×

评分

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

查看全部评分

回复

使用道具 举报

发表于 2022-5-10 08:16:25 | 显示全部楼层
首先,方程式只能是数值,这很重要。
3 s1 h" R4 [; t4 T. A那么,你自定义属性也得整个数值的,就简单了。
发表于 2022-5-10 08:26:43 | 显示全部楼层
- X0 o& p( l+ t( m! a6 L2 C" E" K

本帖子中包含更多资源

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

×

点评

全局变量的“值”是数值,用代码可以自动添加。但是,变量的值引用自定义属性里面的名称字段,用代码没搞出来。  发表于 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 | 显示全部楼层
方程式只支持纯数值的自定义属性调用,如果调用自定义属性的文本值直接在属性调用即可
& f  j7 h0 e- `4 M# @如图:& u1 y+ {4 d) A) ~: L
7 e' w7 G: [  \  B6 ]0 l8 a
1 q1 p+ {" r- a0 _) }. `& p2 i

本帖子中包含更多资源

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

×
 楼主| 发表于 2022-5-11 11:05:30 | 显示全部楼层

* a. r  G( [0 R+ p  K& M- q) s我的主要问题是如何用宏代码实现自动添加?& Y& C* b+ b' Y! h6 H
 楼主| 发表于 2022-5-11 16:41:34 | 显示全部楼层
swapi 自带的例子,swEquationMgr.Add3 有错?1 ?  n6 }! u" G" c
例子如下:
  }5 @6 J& L) kOption Explicit
& g' o) C! F& C* I4 c7 F8 [$ n7 zSub main()# s( w; y& D5 C2 R6 `/ [- f8 k  Z
3 f1 T% N! \0 y2 o! z
    Dim SwApp           As SldWorks.SldWorks: D: O1 ?6 r5 Z' P9 w
    Dim Part            As SldWorks.ModelDoc2; W6 i7 b6 a$ b- B9 l+ {
    Dim swEquationMgr   As SldWorks.EquationMgr6 u; B. r5 A: ^# C- q/ J" A0 Z2 q
    Dim longEquation    As Long2 C9 ^6 P! Q, P  j' s9 {
9 n& T1 ?  H( L/ @9 ^

( G  h$ y5 E0 r  b; D    Set SwApp = Application.SldWorks
: ?( B7 {8 i: }% [    Set Part = SwApp.ActiveDoc
6 R3 K% A5 o! e8 A  n5 H
" g0 ~; C9 f7 z( P, P0 P. Q) g& j    Set swEquationMgr = Part.GetEquationMgr
) A- P' \9 e" M3 y& S7 I    If swEquationMgr Is Nothing Then ErrorMsg SwApp, "Failed to get the equation manager"
2 d2 Z5 Q' z! k, U
" E# p- i2 a6 F! R+ b2 y4 `6 N. {. r- C) K- k- V# t, G
    'Add a global variable assignment at index, 0, to all configurations* I6 r6 I4 D: i2 Q; ~
    longEquation = swEquationMgr.Add3(0, """A"" = 2in", True, swAllConfiguration, Empty)9 k  e- a4 c2 X  v
    If longEquation <> 0 Then ErrorMsg SwApp, "Failed to add a global variable assignment"
+ D3 L. o3 o$ O" O; X) r4 |
) b0 ~. C+ C8 B  X$ B$ j1 r( _5 R+ x/ f; w9 t
    'Add a dimension equation at index, 1, to all configurations
! ?' S9 L1 ?6 U& {1 n! _    longEquation = swEquationMgr.Add3(1, """D1@Boss-Extrude1"" = 0.05in", True, swAllConfiguration, Empty)" W, h/ z: Z( y' O3 ~
    If longEquation <> 1 Then ErrorMsg SwApp, "Failed to add a dimension equation"
5 c) ~+ {4 h+ k: f- M3 K$ Q
5 o& N! f% L- C; c* |$ M: T. D4 X; @! C, o% ~$ ]: ~( H
    'Modify dimension equation at index, 1, in all configurations& p) y/ [# j: W6 z! Y' F
    longEquation = swEquationMgr.SetEquationAndConfigurationOption(1, """D1@Boss-Extrude1"" = 0.07in", swAllConfiguration, Empty)# b% c* S1 y, G& m" y
    If longEquation <> 1 Then ErrorMsg SwApp, "Failed to modify a dimension equation"
# V, K4 q4 }1 p) q, l# s" h; A; ]& i6 X; b) p! U: o% S
- t* s# `0 P! b) A' j. o0 s

: ?" W/ g: L$ O, x* T; P) jEnd Sub
9 |) q: ~* Z) W" u0 h/ L$ y) o  u7 {% A
0 E0 _# x. z& n" E
Function ErrorMsg(SwApp As Object, Message As String). ~8 X4 W- j' f0 d& T, \
    SwApp.SendMsgToUser2 Message, 0, 0
: W. s* u9 U( m4 j9 d; h    SwApp.RecordLine "'*** WARNING - General"7 X: E9 \  V  z. e* W
    SwApp.RecordLine "'*** " & Message# _: t% M2 f, W8 F9 Q8 G8 N7 k# J  Z
    SwApp.RecordLine ""9 s. H' h& o& E" A, O+ {; c! ?3 I3 i/ b
End Function: ^+ W, y3 |, q6 ]* f
( B  F, f7 L1 H; r" z4 {
 楼主| 发表于 2022-5-24 13:53:29 | 显示全部楼层
自定义属性内嵌宏代码:图号代码:    "Part.Extension.CustomPropertyManager("").Set("drawingN",Left(Part.GetTitle, InStr(Part.GetTitle, " ")-1))
0 ]' m0 `2 [6 A名称代码:     Part.Extension.CustomPropertyManager("").Set("partN",Right(Part.GetTitle, Len(Part.GetTitle)-InStr(Part.GetTitle," ")))
/ }$ h3 G- p" t: i- N9 N$ |drawingN:# f- I* ?, g2 _1 C8 K; _* g
partN:    % t2 y6 ?! i0 q; }0 c

  J8 h7 u: h' E) r
# U3 r. {3 i7 }, B$ V方程式: 目前只能手动
" t, a% m* w( V% Z" gA1="图号代码"
8 y6 C% k- W! }" k1 ZA2="名称代码"
' G4 }4 m/ u7 U9 e5 I8 U

本帖子中包含更多资源

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

×
 楼主| 发表于 2023-2-22 14:43:18 | 显示全部楼层
Dim swApp As Object
7 l/ n: @+ ^. S, J6 i6 {Sub main()7 n' D+ N" ]+ }$ B4 e/ O
( V, ]* a: _  r2 O4 S1 \6 a0 _
Set swApp = Application.SldWorks; R; ]* p. ?2 B
7 D* n9 v( ?9 l6 i- o
Set doc = swApp.ActiveDoc5 a0 J$ d$ {/ b  A& a
  For Each an In doc.GetCustomInfoNames   '删除所有自定义属性5 r/ T7 f: O( K9 F# G1 A# _
   doc.DeleteCustomInfo an
) n+ |1 T) ~9 w' @1 o  Next2 n6 g' U# i4 g8 c8 Q9 }
Dim ST, SG As String. a5 X7 w: u5 f  S' }; J8 K
      ST = ""
  }. j, N$ N8 G* h" _0 y9 I8 B      SG = ""
3 @* V2 f; r" |* p1 x6 x    If doc.GetType = 1 Then '零件图
2 a* T, G( A* ]) m6 L+ T  d1 n# v2 l' |6 `7 l) i
       ST = "Part.Extension.CustomPropertyManager" + Chr(40) + Chr(34) + Chr(34) + Chr(41) + ".Set" + Chr(40) + Chr(34) + "图号" + Chr(34) + _
. M3 w. @/ M0 S# f* M             ",Left" + Chr(40) + "Part.GetTitle, InStr" + Chr(40) + "Part.GetTitle, " + Chr(34) + " " + Chr(34) + Chr(41) + "-1" + Chr(41) + Chr(41). g6 r& E7 y! T! F" i0 ]

2 n2 W# {8 M" M4 v3 v       SG = "Part.Extension.CustomPropertyManager" + Chr(40) + Chr(34) + Chr(34) + Chr(41) + ".Set" + Chr(40) + Chr(34) + "名称" + Chr(34) + ",Right" + _/ a. e% `1 k& T( D+ W
             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)
- _* _4 t4 {* s% i+ t; B# x      
6 Y( U  n  W) @1 R    ElseIf doc.GetType = 2 Then '装配体
% C+ C* y( r5 v* a" U      " k& x. Z5 Y; R7 H
       ST = "Assembly.Extension.CustomPropertyManager" + Chr(40) + Chr(34) + Chr(34) + Chr(41) + ".Set" + Chr(40) + Chr(34) + "图号" + Chr(34) + _
0 Z" C! v5 N4 W. Z          ",Left" + Chr(40) + "Assembly.GetTitle, InStr" + Chr(40) + "Assembly.GetTitle, " + Chr(34) + " " + Chr(34) + Chr(41) + "-1" + Chr(41) + Chr(41)4 {+ w2 T5 {) t

* i+ T" M6 e; X       SG = "Assembly.Extension.CustomPropertyManager" + Chr(40) + Chr(34) + Chr(34) + Chr(41) + ".Set" + Chr(40) + Chr(34) + "名称" + Chr(34) + ",Right" + _0 g4 H! Z. J6 q6 i8 Y7 F. O
           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)
: ^3 W& E. o- U# ^5 F! M5 k     End If
% X: \$ H" \1 V9 E1 T+ ?      doc.AddCustomInfo3 "", "图号", swCustomInfoText, "") R3 {  R( r* G2 S! W6 |8 A
      doc.AddCustomInfo3 "", "名称", swCustomInfoText, ""+ w1 S+ r5 t: y+ }0 Q
      doc.AddCustomInfo3 "", "图号代码", swCustomInfoText, ST
: V4 S; a$ |. d* D3 M      doc.AddCustomInfo3 "", "名称代码", swCustomInfoText, SG5 U! U1 d) E2 @* T3 ]' @% ^8 Q2 ^

; ^- P- q. t4 Q1 S      Set swEquationMgr = doc.GetEquationMgr
$ F2 r* i1 l7 P1 W# P      swEquationMgr.Add 0, Chr(34) + "A1" + Chr(34) + "=" + Chr(34) + "名称代码" + Chr(34) '添加方程式---"A1"="名称代码"
; u' e* S% b" m' N& B      swEquationMgr.Add 0, Chr(34) + "A2" + Chr(34) + "=" + Chr(34) + "图号代码" + Chr(34) '添加方程式---"A2"="图号代码". C! k8 z# `8 G  z" |3 I! ]
! P5 s3 f8 A, f" Q. z" M
5 w! j1 g2 T+ n0 w+ ~) i
End Sub
' l+ y/ S8 ~6 K

点评

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

本版积分规则

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

GMT+8, 2025-7-3 12:08 , Processed in 0.072609 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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