找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 5573|回复: 13

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

[复制链接]
发表于 2022-5-9 15:56:42 | 显示全部楼层 |阅读模式
如下图片,如何用代码实现添加全局变量:A2="名称"? 其中”名称”是自定义属性。. ]8 z7 n6 B7 X( Z) y5 V

) s) K) l6 _7 V9 {" Z* @8 K+ L) _
* N& [/ A& Y( Z2 p0 @$ z5 x* o. [

本帖子中包含更多资源

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

×

评分

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

查看全部评分

回复

使用道具 举报

发表于 2022-5-10 08:16:25 | 显示全部楼层
首先,方程式只能是数值,这很重要。
6 r9 I' h4 n' v6 k% H那么,你自定义属性也得整个数值的,就简单了。
发表于 2022-5-10 08:26:43 | 显示全部楼层
  ^6 R$ ?& k" f$ q) |+ F  A

本帖子中包含更多资源

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

×

点评

全局变量的“值”是数值,用代码可以自动添加。但是,变量的值引用自定义属性里面的名称字段,用代码没搞出来。  发表于 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 | 显示全部楼层
方程式只支持纯数值的自定义属性调用,如果调用自定义属性的文本值直接在属性调用即可$ x9 w5 {9 V+ A8 k% b, G9 \& p
如图:3 Z  j1 [$ N! W. J) e
: M& I3 ^: X! t; N
! y& A- ]/ M" d9 w" P$ C

本帖子中包含更多资源

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

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

3 B3 U. p$ \+ s/ ]; a9 o. f我的主要问题是如何用宏代码实现自动添加?
% }1 ~0 E( x) q; |! ~
 楼主| 发表于 2022-5-11 16:41:34 | 显示全部楼层
swapi 自带的例子,swEquationMgr.Add3 有错?
( E3 W5 W# a/ e+ D例子如下:2 e4 ]: l6 J, e1 Q& a% X7 E; w- U
Option Explicit
5 `  r+ e$ L, m" P' y" ^Sub main()
# L& a7 S& F$ ^$ x0 X- _; [+ }# n( Q! ^3 q
    Dim SwApp           As SldWorks.SldWorks% w/ v7 n1 v$ v) v1 M
    Dim Part            As SldWorks.ModelDoc2
/ y( T# R: t% R+ y# N7 Y    Dim swEquationMgr   As SldWorks.EquationMgr
) F( ~, }2 c' t. p/ s. J    Dim longEquation    As Long
3 K( H" n8 [3 \) _) i# P2 g5 }" D+ ?: K4 W5 c" Z- t  t

4 s! z# H& L# F    Set SwApp = Application.SldWorks
  W5 h2 w0 y  g! F# n1 a7 C, N( K    Set Part = SwApp.ActiveDoc
, G" i8 I9 ?5 ?2 r( y3 ]
3 r3 d6 v  l. Q$ n    Set swEquationMgr = Part.GetEquationMgr; F/ |- T5 E% b! w
    If swEquationMgr Is Nothing Then ErrorMsg SwApp, "Failed to get the equation manager"
$ ?. D- C& u" z/ A- |9 t6 O  J/ [( s1 M6 T) C0 r' f: l

, y3 L7 i) R- ]$ e    'Add a global variable assignment at index, 0, to all configurations
( Y/ L  ~4 ~0 S, W$ D: b6 z    longEquation = swEquationMgr.Add3(0, """A"" = 2in", True, swAllConfiguration, Empty)
" E0 o- E& g* k8 {. ]' D/ d    If longEquation <> 0 Then ErrorMsg SwApp, "Failed to add a global variable assignment"
. t7 f+ ~8 q% X3 O: K
% ]; z0 B. \$ A, B+ m# `% g  q; C- w2 f
    'Add a dimension equation at index, 1, to all configurations7 S  s0 O$ j4 `& R; H: S0 x) {
    longEquation = swEquationMgr.Add3(1, """D1@Boss-Extrude1"" = 0.05in", True, swAllConfiguration, Empty)
3 {, G: K: p- x& E" c/ }. @9 [    If longEquation <> 1 Then ErrorMsg SwApp, "Failed to add a dimension equation"9 Q3 A& m2 H. d3 C% ?

3 O: K2 w  D/ W& X' E: S
, L$ P8 |: Q0 i$ m* P    'Modify dimension equation at index, 1, in all configurations4 Y7 f/ C( h4 [) N5 b
    longEquation = swEquationMgr.SetEquationAndConfigurationOption(1, """D1@Boss-Extrude1"" = 0.07in", swAllConfiguration, Empty)) L3 g- |/ @" x' J" M
    If longEquation <> 1 Then ErrorMsg SwApp, "Failed to modify a dimension equation"
& [, Z# ^: ^% D4 ?( f# C2 D
) E# U9 X* ?, v! _3 l* E- c, ]* h; U# D5 Z3 @, J* z

! T4 t$ }' Y1 A* ^3 z1 q3 J" `End Sub" w) c4 n0 c: K5 y8 K
- b) H. X" {2 m# D

2 a( |" i; Q/ ?+ jFunction ErrorMsg(SwApp As Object, Message As String)$ R3 m! G" U& x3 v! V3 u
    SwApp.SendMsgToUser2 Message, 0, 0
3 O' D+ b+ S( n    SwApp.RecordLine "'*** WARNING - General"
# `$ J0 G  y# C% b' ^: z, i    SwApp.RecordLine "'*** " & Message
% @/ g0 x- s- ?, m& b# h) _( J2 S5 s    SwApp.RecordLine ""
0 H" p1 _) _2 J, C0 X" @" REnd Function2 P7 F3 [. J1 P! t8 n
/ |( R0 m1 a: D
 楼主| 发表于 2022-5-24 13:53:29 | 显示全部楼层
自定义属性内嵌宏代码:图号代码:    "Part.Extension.CustomPropertyManager("").Set("drawingN",Left(Part.GetTitle, InStr(Part.GetTitle, " ")-1))9 F0 A4 J7 p) j
名称代码:     Part.Extension.CustomPropertyManager("").Set("partN",Right(Part.GetTitle, Len(Part.GetTitle)-InStr(Part.GetTitle," ")))
3 j1 X3 _: ^; {9 udrawingN:
; S! e7 e+ k$ N) ?2 qpartN:   
; ^( `  e9 A- b: Q! j( E3 a0 p! y$ ~3 j0 \( e
1 Y4 u: @7 Q- {3 q
方程式: 目前只能手动0 f: T3 ?% j% O; `! p
A1="图号代码"
' L: ~& v: w, q+ y  P7 jA2="名称代码"
- C1 d- n, Z! G; c' f0 i

本帖子中包含更多资源

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

×
 楼主| 发表于 2023-2-22 14:43:18 | 显示全部楼层
Dim swApp As Object' ^7 h! H5 K8 S
Sub main()- J* j. m$ V6 c7 c. K

, S2 X8 o  W/ j5 ~0 gSet swApp = Application.SldWorks
2 z% P' H, @+ b% h8 i8 Z
, k2 @' W+ O3 N! _8 [5 zSet doc = swApp.ActiveDoc
  w( c, }6 U0 U8 w. Q: G5 _& t! r  For Each an In doc.GetCustomInfoNames   '删除所有自定义属性
! s* d7 c1 d8 {" ?- C8 d: \   doc.DeleteCustomInfo an
/ Q# z8 }8 q' [& y% P  Next
* u, g* E) W; {# hDim ST, SG As String8 E" w7 Y7 l) `# y+ {% `' ?
      ST = ""
$ T  {+ B1 p5 M: j      SG = ""
$ d0 @$ d0 F* A$ `* A. @    If doc.GetType = 1 Then '零件图" K9 w2 K, J% ^3 `
( x; T! l. Y7 I9 _$ Y
       ST = "Part.Extension.CustomPropertyManager" + Chr(40) + Chr(34) + Chr(34) + Chr(41) + ".Set" + Chr(40) + Chr(34) + "图号" + Chr(34) + _2 G* s1 l( L; N# ~7 W" a  x/ d  }
             ",Left" + Chr(40) + "Part.GetTitle, InStr" + Chr(40) + "Part.GetTitle, " + Chr(34) + " " + Chr(34) + Chr(41) + "-1" + Chr(41) + Chr(41)
- ~! k$ N  z: C4 C# L/ e0 ~! o' S" M7 n; v+ E/ m& i
       SG = "Part.Extension.CustomPropertyManager" + Chr(40) + Chr(34) + Chr(34) + Chr(41) + ".Set" + Chr(40) + Chr(34) + "名称" + Chr(34) + ",Right" + _2 l( j; G4 g. t' K$ K" 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)
# z+ ]5 u9 S1 I      ) J# b! [7 y- Q8 N
    ElseIf doc.GetType = 2 Then '装配体
' N% L( T& c6 X* A      ' C3 ?0 l0 m, `7 Y' }4 S
       ST = "Assembly.Extension.CustomPropertyManager" + Chr(40) + Chr(34) + Chr(34) + Chr(41) + ".Set" + Chr(40) + Chr(34) + "图号" + Chr(34) + _/ U: t' K- ~) g5 t/ V5 A! K
          ",Left" + Chr(40) + "Assembly.GetTitle, InStr" + Chr(40) + "Assembly.GetTitle, " + Chr(34) + " " + Chr(34) + Chr(41) + "-1" + Chr(41) + Chr(41)2 T$ Y! p, v: t) H

+ }7 h& [* n" k       SG = "Assembly.Extension.CustomPropertyManager" + Chr(40) + Chr(34) + Chr(34) + Chr(41) + ".Set" + Chr(40) + Chr(34) + "名称" + Chr(34) + ",Right" + _3 G/ T5 [8 [8 a7 C+ w* i
           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)
! l0 l- H# O7 G8 J+ s     End If
5 i$ ]' ~) R# Q      doc.AddCustomInfo3 "", "图号", swCustomInfoText, ""7 Q; ?9 I2 Z& G4 y- ^; F( v
      doc.AddCustomInfo3 "", "名称", swCustomInfoText, ""% s) N; R8 A( A5 ~# j# z3 n
      doc.AddCustomInfo3 "", "图号代码", swCustomInfoText, ST9 Z/ @( t$ C' T5 N4 W" T# E
      doc.AddCustomInfo3 "", "名称代码", swCustomInfoText, SG
1 |. F( L; E$ l. g! D
" d* u" z/ t% ?* v& ?5 j6 g  r, q      Set swEquationMgr = doc.GetEquationMgr1 U% f: ^, p0 ^* F" \
      swEquationMgr.Add 0, Chr(34) + "A1" + Chr(34) + "=" + Chr(34) + "名称代码" + Chr(34) '添加方程式---"A1"="名称代码") y/ C2 J6 }  D( s
      swEquationMgr.Add 0, Chr(34) + "A2" + Chr(34) + "=" + Chr(34) + "图号代码" + Chr(34) '添加方程式---"A2"="图号代码"
) ^5 M- M2 Q7 Z5 c6 }! j
, _/ g, e9 S" n1 O
: B0 c' G) T/ ?. e" iEnd Sub
7 Z+ K. G$ Z* ]: u, e7 [

点评

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

本版积分规则

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

GMT+8, 2025-8-4 17:29 , Processed in 0.062048 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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