机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 4828|回复: 13

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

[复制链接]
发表于 2022-5-9 15:56:42 | 显示全部楼层 |阅读模式
如下图片,如何用代码实现添加全局变量:A2="名称"? 其中”名称”是自定义属性。
8 t& [! r8 O5 a8 j' [6 `! h9 l. ^0 Z0 ^+ m  C& e
1 [+ R' l: g8 z* x, l

3 G. o! ]/ V4 U, ]: u1 H: J* i

本帖子中包含更多资源

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

x

评分

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

查看全部评分

回复

使用道具 举报

发表于 2022-5-10 08:16:25 | 显示全部楼层
首先,方程式只能是数值,这很重要。
) O* B; B/ W, b3 k& O. g那么,你自定义属性也得整个数值的,就简单了。
回复 支持 反对

使用道具 举报

发表于 2022-5-10 08:26:43 | 显示全部楼层
7 K) j1 C! ^; \; d! @

本帖子中包含更多资源

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

x

点评

全局变量的“值”是数值,用代码可以自动添加。但是,变量的值引用自定义属性里面的名称字段,用代码没搞出来。  发表于 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 | 显示全部楼层
方程式只支持纯数值的自定义属性调用,如果调用自定义属性的文本值直接在属性调用即可
! P* @. V" {0 m1 O. m8 E* b9 h* L( f如图:
8 Q/ K# ~: A. b* i" ?7 ?9 I( j' c# p1 [  {& o
# n+ d- o8 N2 X4 c+ ?9 _

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-11 11:05:30 | 显示全部楼层
! v/ U% ?+ ?$ {$ ?
我的主要问题是如何用宏代码实现自动添加?
! a, x  X% ~6 a  _' R* X& L
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-11 16:41:34 | 显示全部楼层
swapi 自带的例子,swEquationMgr.Add3 有错?
6 r) j8 S3 f- N" @# Z; \例子如下:
# Z9 M' a" A, {* D. MOption Explicit
2 g% R7 N8 n! DSub main()
7 d1 b; R. Q. C- \" K5 Q! m
4 C: D/ {+ c3 U. k7 x( N    Dim SwApp           As SldWorks.SldWorks* O# Y% k  t, ]! x! z* R
    Dim Part            As SldWorks.ModelDoc2" n' I- g) Z- [; i7 k" W: n
    Dim swEquationMgr   As SldWorks.EquationMgr1 H( B9 z/ i0 u0 n
    Dim longEquation    As Long
- |4 O% M; c" z2 h7 s) C* Y* B" w; W4 [+ v
0 @# z4 B. @" ?
    Set SwApp = Application.SldWorks) F( J7 }8 U" s6 G+ M
    Set Part = SwApp.ActiveDoc
8 D" _  a+ s/ m/ |# X
' f) g- z8 i- {" l/ b$ P+ x" B    Set swEquationMgr = Part.GetEquationMgr
3 ~" b. F& \8 T3 w# l    If swEquationMgr Is Nothing Then ErrorMsg SwApp, "Failed to get the equation manager"
( f7 Z+ I: R3 U3 g) b
+ C4 D4 o9 i: X* M/ F
- K" p) z- ?6 g( ]% s% A2 h    'Add a global variable assignment at index, 0, to all configurations6 N( ?* e! Z- r/ X5 g$ X* E
    longEquation = swEquationMgr.Add3(0, """A"" = 2in", True, swAllConfiguration, Empty)
2 \2 f/ c. e& m3 S6 j) E" z    If longEquation <> 0 Then ErrorMsg SwApp, "Failed to add a global variable assignment"
$ f: h. l$ o" R6 O
$ K8 T: K0 ~& ]9 h/ ^' C' ^) {- h7 `( v) V/ @
    'Add a dimension equation at index, 1, to all configurations
- I9 A1 b, E6 k+ |2 a/ j2 T    longEquation = swEquationMgr.Add3(1, """D1@Boss-Extrude1"" = 0.05in", True, swAllConfiguration, Empty)5 }( F# _4 M5 v4 F8 x# ^
    If longEquation <> 1 Then ErrorMsg SwApp, "Failed to add a dimension equation"
% e. Q/ N9 C0 Z) \+ s, w6 X. m0 Q% t
) C5 Z3 o8 u/ N+ s, b4 a; K+ _
* C) Y( D0 b' H( {2 M0 t5 F* u# p    'Modify dimension equation at index, 1, in all configurations
. R6 [7 A0 p( W0 T    longEquation = swEquationMgr.SetEquationAndConfigurationOption(1, """D1@Boss-Extrude1"" = 0.07in", swAllConfiguration, Empty)3 |8 X* |. g/ |3 j' }
    If longEquation <> 1 Then ErrorMsg SwApp, "Failed to modify a dimension equation"; C4 z; }2 i, Z* e3 X, G. j- F3 z5 B

( p) n9 a, y( N' A8 @% T6 `" K5 |! ]) Q0 D  q3 `/ i
$ z* R) l8 F% o3 A1 l. _0 J) l
End Sub
0 L. N, x% w, B9 ]/ c! D2 `3 u' L" j; d" X; e% m( I6 N3 x

4 g; G0 ?$ E5 j1 g1 `- }' WFunction ErrorMsg(SwApp As Object, Message As String)) l6 `: [+ Y6 D7 L3 a( k3 }
    SwApp.SendMsgToUser2 Message, 0, 0
3 w/ c, o6 r* Z* N  G. G7 O4 C    SwApp.RecordLine "'*** WARNING - General"
7 f3 E/ ?7 `; i8 f; Y& O& y    SwApp.RecordLine "'*** " & Message* i% N9 f& M7 g) s, f
    SwApp.RecordLine ""
9 W1 d- G4 a" \3 ~8 z; L. FEnd Function
3 F' M( B$ ?/ @6 V: a; G: V9 F; h- `" L. `$ F! q
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-24 13:53:29 | 显示全部楼层
自定义属性内嵌宏代码:图号代码:    "Part.Extension.CustomPropertyManager("").Set("drawingN",Left(Part.GetTitle, InStr(Part.GetTitle, " ")-1))( t9 A" j* w+ q8 O+ d( _! `+ l" h
名称代码:     Part.Extension.CustomPropertyManager("").Set("partN",Right(Part.GetTitle, Len(Part.GetTitle)-InStr(Part.GetTitle," ")))- h& j. z3 g$ B6 z; B2 H
drawingN:
# m  T( v) F9 Y6 T6 u! b& `# @partN:    1 y8 i0 o9 z  U3 y7 U+ w; Y. q

# q. M: m2 c( r1 ?
7 ~0 B# ~% d- X& r方程式: 目前只能手动
: G* [/ M6 g1 \' l. N- E; D$ T+ HA1="图号代码"
% a. I; i7 Z' O' XA2="名称代码"
0 Z" l( f8 P: C6 I3 o

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-22 14:43:18 | 显示全部楼层
Dim swApp As Object. X) o( j4 |2 ?  c/ l# K; P
Sub main()6 t0 g' A3 ~. e2 c, V

" A) U0 ]8 G4 k" C5 BSet swApp = Application.SldWorks! H, O7 Z# H9 \1 d: I6 b

: v0 `$ S! U' jSet doc = swApp.ActiveDoc
" h3 u( ?1 W- x1 c9 }: a( Z  For Each an In doc.GetCustomInfoNames   '删除所有自定义属性
6 }8 N" \2 x' q4 e8 J* t9 i   doc.DeleteCustomInfo an: O4 X8 B, E8 a5 I8 S8 P. h, Q
  Next
1 S6 ]# H9 h9 S5 `: z! WDim ST, SG As String. s2 m, X5 ^  T. n
      ST = ""
. D: l' @. D" [8 y* H, u1 f/ k+ ?2 e2 m      SG = ""
8 s/ N* u6 l* s& n. @, N$ ^2 H    If doc.GetType = 1 Then '零件图
8 O) k5 x" d  ^( G
2 Z$ h6 O, @8 u$ q       ST = "Part.Extension.CustomPropertyManager" + Chr(40) + Chr(34) + Chr(34) + Chr(41) + ".Set" + Chr(40) + Chr(34) + "图号" + Chr(34) + _# f2 P- Z: {% ^( s" W1 w6 n& Q
             ",Left" + Chr(40) + "Part.GetTitle, InStr" + Chr(40) + "Part.GetTitle, " + Chr(34) + " " + Chr(34) + Chr(41) + "-1" + Chr(41) + Chr(41)
0 i! R# t' B3 r$ u3 u0 L
, C5 T1 J1 S8 L1 x       SG = "Part.Extension.CustomPropertyManager" + Chr(40) + Chr(34) + Chr(34) + Chr(41) + ".Set" + Chr(40) + Chr(34) + "名称" + Chr(34) + ",Right" + _/ l! D% D' }/ X4 L2 v
             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)
8 T; O1 o+ `& ]      
) [* J0 ]( ]8 u2 |/ E9 N& e% G    ElseIf doc.GetType = 2 Then '装配体
4 S- E+ Y- a; K+ V; R      
; b: l+ S+ m) n7 [: k       ST = "Assembly.Extension.CustomPropertyManager" + Chr(40) + Chr(34) + Chr(34) + Chr(41) + ".Set" + Chr(40) + Chr(34) + "图号" + Chr(34) + _# R/ _/ q; ]# s4 j: A, q& \6 W. |
          ",Left" + Chr(40) + "Assembly.GetTitle, InStr" + Chr(40) + "Assembly.GetTitle, " + Chr(34) + " " + Chr(34) + Chr(41) + "-1" + Chr(41) + Chr(41)
$ I. m! ]+ E7 r% j
* m8 D3 `3 f; i) I, O7 ~# Q       SG = "Assembly.Extension.CustomPropertyManager" + Chr(40) + Chr(34) + Chr(34) + Chr(41) + ".Set" + Chr(40) + Chr(34) + "名称" + Chr(34) + ",Right" + _  v8 N: H9 X: D* J8 ]3 |
           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)
/ l$ U- k3 W+ n- O3 x     End If5 g" P: b# ]3 Q, F" b3 f; Y
      doc.AddCustomInfo3 "", "图号", swCustomInfoText, ""
2 Z) o' r5 ^* d# r/ e- M1 h8 \      doc.AddCustomInfo3 "", "名称", swCustomInfoText, ""
* A0 s3 N% G, v      doc.AddCustomInfo3 "", "图号代码", swCustomInfoText, ST: r2 s! a4 C+ T) D/ W5 h* O- I
      doc.AddCustomInfo3 "", "名称代码", swCustomInfoText, SG
- r% u9 D( _) i1 }
1 ?$ d" n' s+ z6 Y2 N      Set swEquationMgr = doc.GetEquationMgr$ |+ d8 n% b; s" g0 b
      swEquationMgr.Add 0, Chr(34) + "A1" + Chr(34) + "=" + Chr(34) + "名称代码" + Chr(34) '添加方程式---"A1"="名称代码"
! [6 U( [- V& P. l! @) o4 v/ E" S; w4 _      swEquationMgr.Add 0, Chr(34) + "A2" + Chr(34) + "=" + Chr(34) + "图号代码" + Chr(34) '添加方程式---"A2"="图号代码"
! }) k0 x: z0 k& R" ], t. U" r* b# ^& N' M5 m' a
, L) p5 I! K7 a
End Sub. k- ?* z9 n+ g" N+ _) t

点评

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-28 11:28 , Processed in 0.058563 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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