找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 5686|回复: 13

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

[复制链接]
发表于 2022-5-9 15:56:42 | 显示全部楼层 |阅读模式
如下图片,如何用代码实现添加全局变量:A2="名称"? 其中”名称”是自定义属性。) s6 l; d3 d0 ]! V0 M& R

3 M1 P- d) w5 I9 Y+ [* A1 z; q  t, [" l
% p7 n: ]5 b5 E, x9 B6 f% a

本帖子中包含更多资源

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

×

评分

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

查看全部评分

回复

使用道具 举报

发表于 2022-5-10 08:16:25 | 显示全部楼层
首先,方程式只能是数值,这很重要。7 Q+ e# o# ?8 S3 w* Y! w1 R
那么,你自定义属性也得整个数值的,就简单了。
发表于 2022-5-10 08:26:43 | 显示全部楼层
$ Y. H/ V# \- ~, }: h& V- n

本帖子中包含更多资源

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

×

点评

全局变量的“值”是数值,用代码可以自动添加。但是,变量的值引用自定义属性里面的名称字段,用代码没搞出来。  发表于 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 | 显示全部楼层
方程式只支持纯数值的自定义属性调用,如果调用自定义属性的文本值直接在属性调用即可
7 U/ t/ Y9 r8 A如图:
0 Y7 l. S3 h: t# Z% Z7 S/ F- J! P% b# ^! r1 n" q/ p

: s. O8 }8 q( M3 _

本帖子中包含更多资源

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

×
 楼主| 发表于 2022-5-11 11:05:30 | 显示全部楼层
, R$ I: D* C5 @
我的主要问题是如何用宏代码实现自动添加?
' ]( P( b  W9 _; [2 s6 I7 j
 楼主| 发表于 2022-5-11 16:41:34 | 显示全部楼层
swapi 自带的例子,swEquationMgr.Add3 有错?7 m, s1 W" S) o2 O
例子如下:
' H" ]% P4 `- ^8 k0 COption Explicit
) K( j6 |% Y" ^: T6 U# BSub main()1 z. @) I2 Z* D1 C6 v

) u" A2 s" ~3 j5 i1 K, O* h    Dim SwApp           As SldWorks.SldWorks
) Z8 L; e, m- y0 j    Dim Part            As SldWorks.ModelDoc2" i+ K, W3 F* T6 G4 ?( J
    Dim swEquationMgr   As SldWorks.EquationMgr  r: B) p1 N( C7 Y0 ]0 F$ B; Y
    Dim longEquation    As Long* z: s6 M. r8 ^- u+ f5 |6 s6 X
% `: F$ Y% r' z5 r1 U. N
& Q6 \0 S& E3 N% s5 o5 J0 p! Z
    Set SwApp = Application.SldWorks
% e$ q. }# y$ ]% Q$ e1 X9 m    Set Part = SwApp.ActiveDoc
& O8 {' g) E+ M  P* {& {! ?0 e5 z9 Z* v1 P0 t+ x8 S5 ^
    Set swEquationMgr = Part.GetEquationMgr. c/ g* b9 b8 O1 H6 q
    If swEquationMgr Is Nothing Then ErrorMsg SwApp, "Failed to get the equation manager"9 Z" T4 d/ g5 \5 d' g+ ?
# W6 D4 h& n1 V$ v4 ?

% N* |- X9 c) F7 }    'Add a global variable assignment at index, 0, to all configurations' F6 |' K7 K& L6 s
    longEquation = swEquationMgr.Add3(0, """A"" = 2in", True, swAllConfiguration, Empty)9 b; r% L6 [& I/ d
    If longEquation <> 0 Then ErrorMsg SwApp, "Failed to add a global variable assignment"! ?% ]- C, l9 r1 S( W* \2 j
# A0 S; P7 D0 M) S- v( W
% K5 t5 U8 C: p: R; J
    'Add a dimension equation at index, 1, to all configurations
" X4 Y& N4 J4 L( T3 M$ g- M    longEquation = swEquationMgr.Add3(1, """D1@Boss-Extrude1"" = 0.05in", True, swAllConfiguration, Empty)
7 N2 n) b4 `& a; M    If longEquation <> 1 Then ErrorMsg SwApp, "Failed to add a dimension equation"# D9 F# Y; z9 R2 E4 E

. j& r. {4 P; e# ]6 l9 X
1 b: G5 y: @; @! K    'Modify dimension equation at index, 1, in all configurations0 o( Q/ T6 A. n# H4 M
    longEquation = swEquationMgr.SetEquationAndConfigurationOption(1, """D1@Boss-Extrude1"" = 0.07in", swAllConfiguration, Empty)/ m" h+ m' ]) F8 g/ t  h2 O
    If longEquation <> 1 Then ErrorMsg SwApp, "Failed to modify a dimension equation"3 v+ [* T0 L- ~# a$ v* X- b

; _" G! L" T/ A9 j7 {: `3 f. e! v- _5 i6 p

! Z9 U8 u+ k/ e1 f3 j( P8 r1 VEnd Sub- O3 d4 D3 g; C5 @

  ]- p0 S& D) V+ O; ]# r0 J. x% \/ j3 S3 ~) M' k2 {1 Z$ H
Function ErrorMsg(SwApp As Object, Message As String)
2 c" @  m) q! @% ?- ]3 n+ @- N% U    SwApp.SendMsgToUser2 Message, 0, 0
9 z; H, r) }+ Z  Q! t; N    SwApp.RecordLine "'*** WARNING - General"
9 T( c: Y* o2 a    SwApp.RecordLine "'*** " & Message8 y" y" E/ E" }0 J$ |( h
    SwApp.RecordLine ""; P+ {& b3 b6 ^* G  L  f
End Function/ l- X! @) W( ?  I
$ c: @4 m) b9 L0 ^3 C+ A
 楼主| 发表于 2022-5-24 13:53:29 | 显示全部楼层
自定义属性内嵌宏代码:图号代码:    "Part.Extension.CustomPropertyManager("").Set("drawingN",Left(Part.GetTitle, InStr(Part.GetTitle, " ")-1)): ]% _* c; [1 X- k; ^
名称代码:     Part.Extension.CustomPropertyManager("").Set("partN",Right(Part.GetTitle, Len(Part.GetTitle)-InStr(Part.GetTitle," ")))
. `" u# C3 j' e- }- e$ pdrawingN:
- w' L! N* w3 ~4 fpartN:   
' l( d3 [* z( |4 h+ ]1 V" c
- E" G- \- Z& Z2 `) l( P9 h! n; T9 \( ~) R9 ^+ _9 O
方程式: 目前只能手动
9 Y1 r$ Q. N4 L0 U4 aA1="图号代码"
- Z" U+ g; ~* UA2="名称代码"
% E' ~+ j  {. d0 H. ], e

本帖子中包含更多资源

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

×
 楼主| 发表于 2023-2-22 14:43:18 | 显示全部楼层
Dim swApp As Object" L0 Y8 o3 O# v" t8 [' ]
Sub main()
6 W' {/ I, q# p! {9 d/ f  B7 e
Set swApp = Application.SldWorks
7 a7 F1 h! V6 A0 X6 v  Q/ z( y* A) \8 o) s0 {2 i( \
Set doc = swApp.ActiveDoc
( }+ s7 l- T' n& Y1 x: s: @  For Each an In doc.GetCustomInfoNames   '删除所有自定义属性" Z4 Q1 `" I& C3 w. H9 }/ E8 c
   doc.DeleteCustomInfo an
, r7 j5 ~9 I3 P" p7 |/ p  Next' i, }; G( Q% j4 T* }/ ^
Dim ST, SG As String. F4 M# S8 a) J) f  Y
      ST = ""
# |9 v1 ^0 f: o, q: Y9 b" H3 P      SG = ""3 W$ P5 B" x5 l1 G' }: R
    If doc.GetType = 1 Then '零件图
: c0 x$ G+ E" j+ x5 p. n
  Y1 T$ f7 u- I  n       ST = "Part.Extension.CustomPropertyManager" + Chr(40) + Chr(34) + Chr(34) + Chr(41) + ".Set" + Chr(40) + Chr(34) + "图号" + Chr(34) + _! E" r) O, s$ a- T4 Z9 C
             ",Left" + Chr(40) + "Part.GetTitle, InStr" + Chr(40) + "Part.GetTitle, " + Chr(34) + " " + Chr(34) + Chr(41) + "-1" + Chr(41) + Chr(41)
/ E: L7 t- h9 W! h: e- v" i  ?$ k
8 D3 q8 U2 w4 X. e       SG = "Part.Extension.CustomPropertyManager" + Chr(40) + Chr(34) + Chr(34) + Chr(41) + ".Set" + Chr(40) + Chr(34) + "名称" + Chr(34) + ",Right" + _
: h" a, H. {. s5 `0 [8 s             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)
: k9 e, q: R- k3 ]2 v( h$ Z      
$ O) D. ~7 u5 n& C2 t( S: u8 J& C: i    ElseIf doc.GetType = 2 Then '装配体
' E6 O2 E8 ?3 M$ O- T5 e        R( {: d' F7 u9 Q- w8 u
       ST = "Assembly.Extension.CustomPropertyManager" + Chr(40) + Chr(34) + Chr(34) + Chr(41) + ".Set" + Chr(40) + Chr(34) + "图号" + Chr(34) + _
1 h; `6 F4 k% r: x          ",Left" + Chr(40) + "Assembly.GetTitle, InStr" + Chr(40) + "Assembly.GetTitle, " + Chr(34) + " " + Chr(34) + Chr(41) + "-1" + Chr(41) + Chr(41)2 r! ~- v: M! c' N

7 |% h: r7 J8 u5 T: k+ G       SG = "Assembly.Extension.CustomPropertyManager" + Chr(40) + Chr(34) + Chr(34) + Chr(41) + ".Set" + Chr(40) + Chr(34) + "名称" + Chr(34) + ",Right" + _% w. K) f7 l$ h8 T  N; Q
           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)7 {' I7 @0 j/ D' c/ n6 ?
     End If
/ }$ Q$ f# g; V" B, [      doc.AddCustomInfo3 "", "图号", swCustomInfoText, ""
4 v8 y3 a* D7 i6 Y- l, Y7 o/ I: o      doc.AddCustomInfo3 "", "名称", swCustomInfoText, ""
1 j5 S$ b9 |  i; ^6 L& |5 |9 U, ]9 Q      doc.AddCustomInfo3 "", "图号代码", swCustomInfoText, ST
6 V& R" v: N' }2 t% }) o7 y9 _( |" j      doc.AddCustomInfo3 "", "名称代码", swCustomInfoText, SG
: V/ H) P( g, c; q
! D8 V/ v7 f9 E* W, ]# h      Set swEquationMgr = doc.GetEquationMgr6 ]  @, \1 X- v: a+ s; s" v' d
      swEquationMgr.Add 0, Chr(34) + "A1" + Chr(34) + "=" + Chr(34) + "名称代码" + Chr(34) '添加方程式---"A1"="名称代码"
9 B  O- R/ |) E( ~' I2 w4 X      swEquationMgr.Add 0, Chr(34) + "A2" + Chr(34) + "=" + Chr(34) + "图号代码" + Chr(34) '添加方程式---"A2"="图号代码"& t3 E+ l0 _* }- Z5 ^
0 X- G' j7 k$ @1 j( Q. i  Z) ~' F
8 k1 O" B2 p; a( J/ m
End Sub/ E8 s4 s9 L0 ]5 `1 R& ]& x5 c

点评

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

本版积分规则

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

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

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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