机械必威体育网址

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 4892|回复: 13
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
1#
发表于 2022-5-9 15:56:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如下图片,如何用代码实现添加全局变量:A2="名称"? 其中”名称”是自定义属性。
1 D* Z" P! h8 k1 G$ T4 A1 ^7 u- A  \. u
# a0 ^4 f& ~: ?3 X5 U4 g4 r

8 C+ A' G% j$ M0 \; T

本帖子中包含更多资源

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

x

评分

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

查看全部评分

回复

使用道具 举报

2#
发表于 2022-5-10 08:16:25 | 只看该作者
首先,方程式只能是数值,这很重要。
2 X8 R6 i3 g  d- ?那么,你自定义属性也得整个数值的,就简单了。
回复 支持 反对

使用道具 举报

3#
发表于 2022-5-10 08:26:43 | 只看该作者
1 k2 {" e' y7 A& ~# t

本帖子中包含更多资源

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

x

点评

全局变量的“值”是数值,用代码可以自动添加。但是,变量的值引用自定义属性里面的名称字段,用代码没搞出来。  发表于 2022-5-11 14:34
变量的“值”一定要是数值,这很重要。至于你说“值”是文字型的,我觉得对于会二次开发的,也都不是事。毕竟汉字,字符对于计算机来说,都是数值。提取数值,再通过某种方式转换回去,肯定可以做到一一对应。  发表于 2022-5-10 08:55
属性那里选数值不是必须的,你那里选文字,然后后边栏里填个数。方程式那边引用这一项属性,出来的还是个数,不影响。 楼主是想用方程式引用具体的文字数据,那确实不可能  发表于 2022-5-10 08:37
回复 支持 反对

使用道具 举报

4#
发表于 2022-5-10 09:36:00 | 只看该作者
你的目的是什么呢?自定义属性可以直接用代码Part.CustomInfo2("", "名称")赋值
回复 支持 反对

使用道具 举报

5#
发表于 2022-5-10 10:10:14 | 只看该作者
方程式只支持纯数值的自定义属性调用,如果调用自定义属性的文本值直接在属性调用即可
2 _- j/ a+ j7 @: y* V" [/ c如图:
* j9 D1 a6 k7 S8 W) y8 A" v7 C1 d

; m/ C) G4 }  a

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

6#
 楼主| 发表于 2022-5-11 11:05:30 | 只看该作者

- v+ v& I0 ~# W" n$ l我的主要问题是如何用宏代码实现自动添加?" o3 X$ l  ]" r8 \
回复 支持 反对

使用道具 举报

7#
 楼主| 发表于 2022-5-11 16:41:34 | 只看该作者
swapi 自带的例子,swEquationMgr.Add3 有错?6 O- E; H- }, V1 U% X
例子如下:
' i% `5 z, M) \0 N* {* qOption Explicit
9 k* x" X% U: ESub main()
0 M# h" O& l1 I. r- Z/ A( }: _$ ^" `$ T4 W6 V1 `" I6 f
    Dim SwApp           As SldWorks.SldWorks
$ q3 F7 i$ Y8 z! v* u$ w    Dim Part            As SldWorks.ModelDoc2; S. R* T) Y: j" {, x
    Dim swEquationMgr   As SldWorks.EquationMgr
5 y$ n: v: a" S  Z    Dim longEquation    As Long2 E+ t* S! |1 l3 c& ]
& E% h4 k9 B! @5 A
6 g- D* S/ a$ P
    Set SwApp = Application.SldWorks  d& R0 @' e/ H9 v
    Set Part = SwApp.ActiveDoc
5 F4 g9 D" q& H  g5 e. d8 ]3 {6 M6 @6 C0 K& a
    Set swEquationMgr = Part.GetEquationMgr2 N& R( P- y8 D) C. J
    If swEquationMgr Is Nothing Then ErrorMsg SwApp, "Failed to get the equation manager"2 L$ m6 j& {9 m% \3 d
: A1 j% D1 {  |( G+ q4 H) P& J

& H, p' d% v0 g' O    'Add a global variable assignment at index, 0, to all configurations
) k, a6 w- [2 r! \2 L  p- L    longEquation = swEquationMgr.Add3(0, """A"" = 2in", True, swAllConfiguration, Empty)* Q0 H0 {# H& z
    If longEquation <> 0 Then ErrorMsg SwApp, "Failed to add a global variable assignment"
0 P( z' _+ _. t6 d: d! _+ f1 @5 B; D# n: m; B$ b9 _9 A# [8 h- }) b

+ Z+ h3 L3 A# s1 P; ?    'Add a dimension equation at index, 1, to all configurations0 h) \1 `! C; ~7 w4 ?
    longEquation = swEquationMgr.Add3(1, """D1@Boss-Extrude1"" = 0.05in", True, swAllConfiguration, Empty); ^1 G/ d* O' [( Z/ [" C$ D
    If longEquation <> 1 Then ErrorMsg SwApp, "Failed to add a dimension equation": H' V0 l! ~( f0 d2 S; W
) a, a* x/ x5 a0 s  f
* J" {6 Q  M, c) k% x
    'Modify dimension equation at index, 1, in all configurations
/ z! a, Z) d, p; G    longEquation = swEquationMgr.SetEquationAndConfigurationOption(1, """D1@Boss-Extrude1"" = 0.07in", swAllConfiguration, Empty)
9 h9 C- G* m- ^% V3 r3 ~    If longEquation <> 1 Then ErrorMsg SwApp, "Failed to modify a dimension equation"
+ M6 `% B% j$ `7 S4 L$ i+ ^
+ r% Q7 P) b" p/ r$ V/ Y  h) m2 ?) u6 ^! q/ r0 Q
# s+ ~+ v+ I& L$ [" W% D
End Sub
: e. {+ j& X7 `1 @( g* k1 o
& W% ]) v1 \1 J& [* U0 P' a9 O
) Y' {( Y1 I1 a6 uFunction ErrorMsg(SwApp As Object, Message As String)  L' T' \6 q* H! _5 Q- g* n  {
    SwApp.SendMsgToUser2 Message, 0, 0
, G+ ]0 Z* X6 z1 o! C- H. I5 B    SwApp.RecordLine "'*** WARNING - General"! O+ ]7 ]/ b+ g2 |
    SwApp.RecordLine "'*** " & Message- m% m, X1 k; M0 Z' m
    SwApp.RecordLine ""- R: z9 E; w& _9 T. ?8 f
End Function% V- H/ e/ ?& F7 o( h2 M

! ]3 T+ k" d0 J' {0 D
回复 支持 反对

使用道具 举报

8#
 楼主| 发表于 2022-5-24 13:53:29 | 只看该作者
自定义属性内嵌宏代码:图号代码:    "Part.Extension.CustomPropertyManager("").Set("drawingN",Left(Part.GetTitle, InStr(Part.GetTitle, " ")-1))
9 M, H5 f8 U7 N0 y( I, X1 M5 r% ]名称代码:     Part.Extension.CustomPropertyManager("").Set("partN",Right(Part.GetTitle, Len(Part.GetTitle)-InStr(Part.GetTitle," ")))) H) E; F' V4 }8 b$ Y1 G
drawingN:
. }& ?2 [/ I3 {2 J: a7 Y% v' ~$ epartN:   
. Q2 I6 c  n3 A/ p2 f) Q2 f/ N" z& \9 w) L; p
6 m& {2 A: w0 {
方程式: 目前只能手动
) j7 p1 c4 X7 f% L3 mA1="图号代码"
1 N9 ]+ O( d" k! IA2="名称代码"7 ]5 @; \# ~' U; ?- Z3 z& H9 a. H

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

9#
 楼主| 发表于 2023-2-22 14:43:18 | 只看该作者
Dim swApp As Object
* c6 M/ J- Y% y! ~2 ~1 F& P4 l8 oSub main()  {/ @' p' f* I# {9 j3 E
" p! B* V3 g8 G$ C/ p/ M% i
Set swApp = Application.SldWorks0 p  f7 l* w/ d8 V- ?
, T8 U5 U8 C7 T& N2 X
Set doc = swApp.ActiveDoc
. f; ?( K. a- A0 o1 l: T  For Each an In doc.GetCustomInfoNames   '删除所有自定义属性' q: \0 ~3 ^9 v: A: Y. \. h1 D8 M
   doc.DeleteCustomInfo an+ w2 K" `; L# Q4 ^5 O; q( I
  Next) F& V3 R  z5 u7 D( X; v
Dim ST, SG As String; _  @+ m! j8 {" j& H0 I) a
      ST = ""
/ J+ M4 }: i; W      SG = ""
* j+ o4 I* o8 u% ~    If doc.GetType = 1 Then '零件图
; I! q# k- q+ a
8 M8 H) q  G: s       ST = "Part.Extension.CustomPropertyManager" + Chr(40) + Chr(34) + Chr(34) + Chr(41) + ".Set" + Chr(40) + Chr(34) + "图号" + Chr(34) + _
6 [* [2 s. c4 L# y: |             ",Left" + Chr(40) + "Part.GetTitle, InStr" + Chr(40) + "Part.GetTitle, " + Chr(34) + " " + Chr(34) + Chr(41) + "-1" + Chr(41) + Chr(41)9 X  n5 `8 A* L, o# D% w
. k! k8 A; f, V* ~" i
       SG = "Part.Extension.CustomPropertyManager" + Chr(40) + Chr(34) + Chr(34) + Chr(41) + ".Set" + Chr(40) + Chr(34) + "名称" + Chr(34) + ",Right" + _7 A: @" x- y1 B5 {2 x3 h! j1 `
             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)5 H& ], t2 @" ]+ \
      
, x/ v, Z9 O! i# C+ U7 r    ElseIf doc.GetType = 2 Then '装配体
# q$ X$ J* M% X6 f% ]  r' O4 Z      3 _* I. W. M5 C7 K
       ST = "Assembly.Extension.CustomPropertyManager" + Chr(40) + Chr(34) + Chr(34) + Chr(41) + ".Set" + Chr(40) + Chr(34) + "图号" + Chr(34) + _' f" q' q7 T% Q* M% O
          ",Left" + Chr(40) + "Assembly.GetTitle, InStr" + Chr(40) + "Assembly.GetTitle, " + Chr(34) + " " + Chr(34) + Chr(41) + "-1" + Chr(41) + Chr(41)
8 }% x8 z/ J9 g5 A9 c; b5 [8 x7 h/ L3 Q
       SG = "Assembly.Extension.CustomPropertyManager" + Chr(40) + Chr(34) + Chr(34) + Chr(41) + ".Set" + Chr(40) + Chr(34) + "名称" + Chr(34) + ",Right" + _
# N' h, e, q# w6 d' s           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)% g4 j- m6 W8 R0 C7 a% {0 T8 H
     End If
) j5 }0 A$ }/ h      doc.AddCustomInfo3 "", "图号", swCustomInfoText, ""
; \7 z, W$ y0 Z: J2 J      doc.AddCustomInfo3 "", "名称", swCustomInfoText, ""
; h$ v+ i$ D' {4 Y( W; t      doc.AddCustomInfo3 "", "图号代码", swCustomInfoText, ST# a+ o( n& Z! E6 x+ K$ G
      doc.AddCustomInfo3 "", "名称代码", swCustomInfoText, SG" ^* V5 P3 I5 |3 S
9 W+ D' m# y; u: R. U5 Q. y5 }
      Set swEquationMgr = doc.GetEquationMgr# x, i3 v) R9 r5 Z# P3 G
      swEquationMgr.Add 0, Chr(34) + "A1" + Chr(34) + "=" + Chr(34) + "名称代码" + Chr(34) '添加方程式---"A1"="名称代码"% G  \' e" u  Q! k
      swEquationMgr.Add 0, Chr(34) + "A2" + Chr(34) + "=" + Chr(34) + "图号代码" + Chr(34) '添加方程式---"A2"="图号代码"
: Q2 ?2 _5 p3 u
2 Z7 b3 I0 w. j  t3 @/ T
2 i3 Z4 _0 \. C3 uEnd Sub: K$ B% Z6 H. m9 U* G6 b

点评

名称规则:图号+空格+名称  发表于 2023-2-22 14:45
可以在模型树直接改名,并更新到相关自定义属性里了  发表于 2023-2-22 14:44
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

小黑屋|手机版|Archiver|机械必威体育网址 ( 京ICP备10217105号-1,京ICP证050210号,浙公网安备33038202004372号 )

GMT+8, 2024-12-26 08:56 , Processed in 0.051775 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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