找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 5489|回复: 13

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

[复制链接]
发表于 2022-5-9 15:56:42 | 显示全部楼层 |阅读模式
如下图片,如何用代码实现添加全局变量:A2="名称"? 其中”名称”是自定义属性。
2 j! g9 K1 [9 n( {/ }; \+ z, i" \1 ^5 a) g; Y- ~
  V5 \& u# C+ T( _2 T+ V: E3 ]' y

' S5 o$ h3 D* ]5 Y; M' ^

本帖子中包含更多资源

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

×

评分

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

查看全部评分

回复

使用道具 举报

发表于 2022-5-10 08:16:25 | 显示全部楼层
首先,方程式只能是数值,这很重要。/ u, l& U: I# i! y
那么,你自定义属性也得整个数值的,就简单了。
发表于 2022-5-10 08:26:43 | 显示全部楼层

/ @2 Y9 F9 B3 Q6 |$ O7 q% H4 ?

本帖子中包含更多资源

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

×

点评

全局变量的“值”是数值,用代码可以自动添加。但是,变量的值引用自定义属性里面的名称字段,用代码没搞出来。  发表于 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 | 显示全部楼层
方程式只支持纯数值的自定义属性调用,如果调用自定义属性的文本值直接在属性调用即可& O" D7 L* f2 L4 X5 m0 O5 v
如图:
* W4 E' r" u; w; Q7 b* B- E! G# r9 [5 N' A2 l& S7 P8 I

, x, K8 U* V& r0 B$ i3 z

本帖子中包含更多资源

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

×
 楼主| 发表于 2022-5-11 11:05:30 | 显示全部楼层
! h; ]0 V! j- n! t
我的主要问题是如何用宏代码实现自动添加?$ ?5 M( m4 F7 o# z4 b8 F" d
 楼主| 发表于 2022-5-11 16:41:34 | 显示全部楼层
swapi 自带的例子,swEquationMgr.Add3 有错?5 P% c* L$ E9 B" @8 I7 [
例子如下:4 d( n# i4 q: r7 ?4 {7 [
Option Explicit/ v8 ]$ C. W- J1 p$ s
Sub main(). B2 a2 t- o$ g9 E7 u/ b
/ ?6 j9 s' {6 R; c
    Dim SwApp           As SldWorks.SldWorks
6 Q( p+ w7 Y/ g1 E3 u. Q; u" t# X    Dim Part            As SldWorks.ModelDoc2
5 S$ r7 T5 U% O8 m& `) m3 g    Dim swEquationMgr   As SldWorks.EquationMgr! @6 K2 `; e; r9 K# i  `
    Dim longEquation    As Long9 e% x7 o& R* @8 W, q9 S

9 ?' I- E9 a: ]; X/ W1 u! c
4 w# i! I% n$ D    Set SwApp = Application.SldWorks
) F! o7 z. o, m7 p8 e# e4 H    Set Part = SwApp.ActiveDoc# K6 g$ V; C# w  k& L: i
2 r$ z7 g+ J+ X% Z! |7 }
    Set swEquationMgr = Part.GetEquationMgr
3 m% B+ h5 F' u) I5 R  [' F  l    If swEquationMgr Is Nothing Then ErrorMsg SwApp, "Failed to get the equation manager"" j6 v8 T) E9 {" p

3 y0 A2 n3 C& b3 o' V
* v8 J1 A1 V! X2 m+ y    'Add a global variable assignment at index, 0, to all configurations
/ d) R' }4 T8 O+ ]1 f( W    longEquation = swEquationMgr.Add3(0, """A"" = 2in", True, swAllConfiguration, Empty). V" z; H" _) Z* O% \& U0 {1 ~
    If longEquation <> 0 Then ErrorMsg SwApp, "Failed to add a global variable assignment"
- M8 j1 w. D/ @7 W4 K
: k3 n, z: G( @- F1 w0 W9 J$ n: g
+ l2 H5 ~0 U  t& K7 s    'Add a dimension equation at index, 1, to all configurations
$ @/ g. R& m. h% j    longEquation = swEquationMgr.Add3(1, """D1@Boss-Extrude1"" = 0.05in", True, swAllConfiguration, Empty)
. y; p, A0 @9 P$ ]8 o; I$ t% J) a2 m9 a    If longEquation <> 1 Then ErrorMsg SwApp, "Failed to add a dimension equation"
! F0 s6 m+ e' ?8 j" F0 z" H  j2 X$ V! i0 d
, \* b! ]6 k* N) B& q
    'Modify dimension equation at index, 1, in all configurations6 D0 }8 M" o5 j/ I& Z
    longEquation = swEquationMgr.SetEquationAndConfigurationOption(1, """D1@Boss-Extrude1"" = 0.07in", swAllConfiguration, Empty)
- T/ R2 C( ]/ @2 @2 C2 s    If longEquation <> 1 Then ErrorMsg SwApp, "Failed to modify a dimension equation"* }. t3 h+ {$ ^( k1 j% e

: I/ e. q( _+ d( h5 `% y0 k0 Y4 {$ |6 J! s4 H" C, N; `) y6 \9 W+ \

$ Q" Q) I. p( x' q! f# T  IEnd Sub' e, a- k# O7 @7 P$ V' O

7 Y3 [6 ~, X4 Y7 x1 J+ o" _
( t: @% ?) ?# V9 TFunction ErrorMsg(SwApp As Object, Message As String)
8 U9 B. q9 ~' m7 f3 _/ D    SwApp.SendMsgToUser2 Message, 0, 0
4 h: Z# i- a/ M: q6 `' S    SwApp.RecordLine "'*** WARNING - General"& R# ], i5 B( d, D. f3 Z9 z
    SwApp.RecordLine "'*** " & Message
# j3 p4 }( c1 @, I% P    SwApp.RecordLine ""$ [* h% s, G4 g0 w* J
End Function
# ]  J5 j7 V+ Y8 d2 k- {
1 a+ h! `- C! p& |9 W0 \
 楼主| 发表于 2022-5-24 13:53:29 | 显示全部楼层
自定义属性内嵌宏代码:图号代码:    "Part.Extension.CustomPropertyManager("").Set("drawingN",Left(Part.GetTitle, InStr(Part.GetTitle, " ")-1))
( s, q+ o- A" }) _名称代码:     Part.Extension.CustomPropertyManager("").Set("partN",Right(Part.GetTitle, Len(Part.GetTitle)-InStr(Part.GetTitle," ")))
$ Y$ U# o/ r4 N+ J1 q7 z' EdrawingN:2 z  Q7 l! I) c% S% W6 m# [
partN:   
/ m2 u5 {2 L( X' `( e, @) n
! g/ G% E2 D- s( S: F4 h0 z
8 z. s+ K& M0 Q# W8 \; ?: S- P方程式: 目前只能手动1 ~) z" U$ K3 L5 W
A1="图号代码"" V2 ~9 l" o# M  R1 E
A2="名称代码"
" q- l$ H! s1 [

本帖子中包含更多资源

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

×
 楼主| 发表于 2023-2-22 14:43:18 | 显示全部楼层
Dim swApp As Object
' o. x, L6 V* c. lSub main()& a) u" z8 p) }
* h' ^! M/ a5 `6 Y7 S. t9 j
Set swApp = Application.SldWorks. i/ ~& ]) e. Y8 _' x' X. [+ P+ v! @# Z
9 j( }) w0 `8 M" J2 [1 {
Set doc = swApp.ActiveDoc
0 \8 {& ^3 v. @7 ?* o- X9 z  For Each an In doc.GetCustomInfoNames   '删除所有自定义属性# f5 n7 y8 l5 O
   doc.DeleteCustomInfo an
+ T# Z0 [6 ~" z; f; U8 c: V$ r  Next* ?2 h: T$ Q1 ]
Dim ST, SG As String! R  T  w0 w4 f
      ST = ""3 }2 j& Q2 R8 _  g
      SG = "") X; A0 k5 m( B! Y8 Q1 {" I4 ~
    If doc.GetType = 1 Then '零件图
- B: P5 \& ^* Z# l
2 t4 B5 I% J8 _       ST = "Part.Extension.CustomPropertyManager" + Chr(40) + Chr(34) + Chr(34) + Chr(41) + ".Set" + Chr(40) + Chr(34) + "图号" + Chr(34) + _0 d; `0 h$ {! n, o
             ",Left" + Chr(40) + "Part.GetTitle, InStr" + Chr(40) + "Part.GetTitle, " + Chr(34) + " " + Chr(34) + Chr(41) + "-1" + Chr(41) + Chr(41)
$ W! b0 \3 E5 U' Q* d( L) ?& A4 [: B/ B& j3 h% n
       SG = "Part.Extension.CustomPropertyManager" + Chr(40) + Chr(34) + Chr(34) + Chr(41) + ".Set" + Chr(40) + Chr(34) + "名称" + Chr(34) + ",Right" + _
. j# k6 i; L7 H, @2 d. Y             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)
; c" m( U% Y: M      1 h! G, ]9 b8 T; ^" U
    ElseIf doc.GetType = 2 Then '装配体% \6 I6 G$ s2 D
      ( A7 p3 \. j9 L2 A
       ST = "Assembly.Extension.CustomPropertyManager" + Chr(40) + Chr(34) + Chr(34) + Chr(41) + ".Set" + Chr(40) + Chr(34) + "图号" + Chr(34) + _
8 ?6 I% I+ q/ O7 @5 |/ y          ",Left" + Chr(40) + "Assembly.GetTitle, InStr" + Chr(40) + "Assembly.GetTitle, " + Chr(34) + " " + Chr(34) + Chr(41) + "-1" + Chr(41) + Chr(41)
0 d5 z8 y' y" ~: e5 j. a
9 C% D: T: @+ H2 r- @  S: F       SG = "Assembly.Extension.CustomPropertyManager" + Chr(40) + Chr(34) + Chr(34) + Chr(41) + ".Set" + Chr(40) + Chr(34) + "名称" + Chr(34) + ",Right" + _$ Q3 z/ T$ g0 `$ B( T: p. m, R
           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); W( R8 `$ c/ L1 i
     End If2 ], W; @" @& u2 F7 E" W
      doc.AddCustomInfo3 "", "图号", swCustomInfoText, ""
8 u& t- \4 W. {' A9 w      doc.AddCustomInfo3 "", "名称", swCustomInfoText, ""
- l8 X7 u! q" j, K8 P5 X      doc.AddCustomInfo3 "", "图号代码", swCustomInfoText, ST; b0 g# L" u" r" @1 F1 f( Q
      doc.AddCustomInfo3 "", "名称代码", swCustomInfoText, SG
- ]6 M; n* {3 f1 {3 g0 q5 B
6 E* B& F0 D7 W1 Q2 Y- E7 N      Set swEquationMgr = doc.GetEquationMgr! M6 X0 N/ @# J2 ]5 m
      swEquationMgr.Add 0, Chr(34) + "A1" + Chr(34) + "=" + Chr(34) + "名称代码" + Chr(34) '添加方程式---"A1"="名称代码"( X' T0 [. g8 A" y2 s& x
      swEquationMgr.Add 0, Chr(34) + "A2" + Chr(34) + "=" + Chr(34) + "图号代码" + Chr(34) '添加方程式---"A2"="图号代码"
0 c+ b/ r0 j6 J$ {' d" J. e' Z8 W# U$ Q# s
# W8 V% F' P, K2 k) H; U: C) b
End Sub/ Y8 e2 E/ t- }

点评

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

本版积分规则

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

GMT+8, 2025-7-2 15:36 , Processed in 0.076596 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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