找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 5685|回复: 13

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

[复制链接]
发表于 2022-5-9 15:56:42 | 显示全部楼层 |阅读模式
如下图片,如何用代码实现添加全局变量:A2="名称"? 其中”名称”是自定义属性。5 c8 o( `. j* \* C' }' w# t
* R, N2 f% i; ^

9 t  Q8 t4 M7 w7 O$ x7 }
$ [% K: d% i) ?# n7 k

本帖子中包含更多资源

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

×

评分

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

查看全部评分

回复

使用道具 举报

发表于 2022-5-10 08:16:25 | 显示全部楼层
首先,方程式只能是数值,这很重要。
$ K: Z. O% v( a: P2 m6 V& f那么,你自定义属性也得整个数值的,就简单了。
发表于 2022-5-10 08:26:43 | 显示全部楼层
" y1 I9 M3 R$ z/ v+ P& j. H

本帖子中包含更多资源

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

×

点评

全局变量的“值”是数值,用代码可以自动添加。但是,变量的值引用自定义属性里面的名称字段,用代码没搞出来。  发表于 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 | 显示全部楼层
方程式只支持纯数值的自定义属性调用,如果调用自定义属性的文本值直接在属性调用即可9 e' R+ d1 [" b, J, H
如图:; q- A0 I% c% I7 V' w  o

/ `% k6 U  w/ O4 Z6 _5 Y
: {5 y. [$ P3 _, |/ C

本帖子中包含更多资源

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

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

9 Y4 d% X8 N! k8 ?+ |我的主要问题是如何用宏代码实现自动添加?
/ c, T9 k/ Y1 W. \# f1 I' K$ s. d
 楼主| 发表于 2022-5-11 16:41:34 | 显示全部楼层
swapi 自带的例子,swEquationMgr.Add3 有错?! d' Y# V6 s2 s: o, h9 b5 q
例子如下:
5 R5 v9 X8 ?$ G3 fOption Explicit+ Y% f" ~0 ~3 R( v
Sub main()
! Z" N; A% d% y9 ~8 D. H: N
" @* C8 e9 `5 R0 s    Dim SwApp           As SldWorks.SldWorks" u8 [: j# a% P* w3 A* P
    Dim Part            As SldWorks.ModelDoc2
6 O- n% Q) s, u$ ?    Dim swEquationMgr   As SldWorks.EquationMgr
  v0 C" C) Z- `' J    Dim longEquation    As Long
' W/ ?$ B1 ]$ u  m$ {* y1 p' C: `" `# W7 B1 d$ ~
6 _, S% s# H( \9 [
    Set SwApp = Application.SldWorks3 K( f. Q! y! N- s( x
    Set Part = SwApp.ActiveDoc
) N' M! A$ R9 x1 ^6 N' F$ k$ h
: ~% D! b- e8 |7 ]; [$ X$ U+ G3 x& }    Set swEquationMgr = Part.GetEquationMgr. o5 ]8 F! M7 j' V+ ~# Z/ B
    If swEquationMgr Is Nothing Then ErrorMsg SwApp, "Failed to get the equation manager"
, d6 h8 E* l9 q
  {8 i+ Z% ]7 m2 p( U- H9 a( W. x( s0 ^- ]
    'Add a global variable assignment at index, 0, to all configurations
" Y: C8 z. n& N6 e    longEquation = swEquationMgr.Add3(0, """A"" = 2in", True, swAllConfiguration, Empty)7 K0 V6 a5 S$ T6 ?8 U* `
    If longEquation <> 0 Then ErrorMsg SwApp, "Failed to add a global variable assignment"
% ~2 Q6 A* @! P/ T1 j  v; p6 y5 K, ~) v& D, H

, {/ b" V% N9 Q' t. T0 r0 u" h! b    'Add a dimension equation at index, 1, to all configurations
5 T. p: Q" H) C" [# v8 X5 r    longEquation = swEquationMgr.Add3(1, """D1@Boss-Extrude1"" = 0.05in", True, swAllConfiguration, Empty): L& x* z: \+ A" J6 n" G; y
    If longEquation <> 1 Then ErrorMsg SwApp, "Failed to add a dimension equation"
; j* k- g: x& ~5 k+ C' X6 Z* y& s

* G, ?- o8 o8 d- L6 }; c    'Modify dimension equation at index, 1, in all configurations, P9 w: I5 |# F8 n0 x
    longEquation = swEquationMgr.SetEquationAndConfigurationOption(1, """D1@Boss-Extrude1"" = 0.07in", swAllConfiguration, Empty)
6 a5 ~9 z& n: z4 g9 Z% W, G    If longEquation <> 1 Then ErrorMsg SwApp, "Failed to modify a dimension equation"
: x6 T9 s* V2 B& e
9 g- `$ C9 i/ `5 T# G
/ T) e2 h) f, e& f2 R) Z2 F6 i- s5 j8 o5 E5 h- O$ f$ y
End Sub3 t0 j% H/ m5 p0 _; X
  ~7 \5 n0 D% F' M# ?  [% f
* E* u; u6 N$ o- Q0 M
Function ErrorMsg(SwApp As Object, Message As String)& _+ f. [: U$ h
    SwApp.SendMsgToUser2 Message, 0, 0
; M5 u+ p! S8 ]- I7 r    SwApp.RecordLine "'*** WARNING - General"3 _, b# u1 \7 a
    SwApp.RecordLine "'*** " & Message
5 m( X" Q8 @" k! @    SwApp.RecordLine ""
" {& p8 h! G( J& `, LEnd Function
. t3 I* a# Q$ \0 ]5 Z. i  ]
# D) k; R. q! R; [
 楼主| 发表于 2022-5-24 13:53:29 | 显示全部楼层
自定义属性内嵌宏代码:图号代码:    "Part.Extension.CustomPropertyManager("").Set("drawingN",Left(Part.GetTitle, InStr(Part.GetTitle, " ")-1))" C  g3 Q. l) ?4 W0 m
名称代码:     Part.Extension.CustomPropertyManager("").Set("partN",Right(Part.GetTitle, Len(Part.GetTitle)-InStr(Part.GetTitle," ")))" h. K0 N: Q7 ?
drawingN:% Q6 I) N3 F$ Q% T2 c" g+ ?
partN:    2 M: V5 y  v$ c- @; {* D9 N9 \
& F+ p2 |4 p2 F$ r' J, r" Z( _9 }

6 Z1 r3 G, u0 `3 w0 d方程式: 目前只能手动
( {0 e) i- n9 X  Q) OA1="图号代码"" Z  ?$ t9 ^6 S
A2="名称代码"
4 L( [2 t) c+ Q3 N( S) W9 C3 O

本帖子中包含更多资源

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

×
 楼主| 发表于 2023-2-22 14:43:18 | 显示全部楼层
Dim swApp As Object
' ~4 b1 f6 F9 b9 L6 \0 ]% W+ YSub main()0 E* h. O$ S4 M1 S! l5 g& }

) B* P- X) m1 |; r+ ISet swApp = Application.SldWorks
* T' F7 d" E8 C9 L
2 M2 c8 p/ C. O2 Y" }Set doc = swApp.ActiveDoc, ^1 m+ M4 T- Z
  For Each an In doc.GetCustomInfoNames   '删除所有自定义属性
0 [" ^$ D' B$ q% C# o   doc.DeleteCustomInfo an
; w) h1 |8 ?0 Q4 [) E1 z  Next
9 K/ q8 O" D/ C! pDim ST, SG As String5 \8 g6 `5 Y8 B7 d: K
      ST = "". D# ~" {5 F5 A- N/ B
      SG = ""
" F$ P8 d" p! i& g& n( J, l$ F    If doc.GetType = 1 Then '零件图
7 {5 g! d- h( `, J% X; N
* K9 U" @1 ?, o# _# u) |/ M       ST = "Part.Extension.CustomPropertyManager" + Chr(40) + Chr(34) + Chr(34) + Chr(41) + ".Set" + Chr(40) + Chr(34) + "图号" + Chr(34) + _
& d. l* y9 m9 J( m             ",Left" + Chr(40) + "Part.GetTitle, InStr" + Chr(40) + "Part.GetTitle, " + Chr(34) + " " + Chr(34) + Chr(41) + "-1" + Chr(41) + Chr(41)* _9 Z4 [3 V3 g( j. G! s
$ x: R4 _( E" y& k
       SG = "Part.Extension.CustomPropertyManager" + Chr(40) + Chr(34) + Chr(34) + Chr(41) + ".Set" + Chr(40) + Chr(34) + "名称" + Chr(34) + ",Right" + _4 l# ?6 L% m: i: A. ?8 N
             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)
- T. s5 |5 L$ n9 T% A4 |) V5 A      ! _; _: h' t  N6 M7 T* f
    ElseIf doc.GetType = 2 Then '装配体" A) I/ p. T3 Z7 N- I5 ^
      
) d4 V) G2 E/ I) l: k. m       ST = "Assembly.Extension.CustomPropertyManager" + Chr(40) + Chr(34) + Chr(34) + Chr(41) + ".Set" + Chr(40) + Chr(34) + "图号" + Chr(34) + _/ v3 u1 M( L5 ?7 v# C, N# {
          ",Left" + Chr(40) + "Assembly.GetTitle, InStr" + Chr(40) + "Assembly.GetTitle, " + Chr(34) + " " + Chr(34) + Chr(41) + "-1" + Chr(41) + Chr(41)
4 P" E3 R, N0 L+ v% k/ Z2 w0 H) I% i( f' j: E1 L* @. }
       SG = "Assembly.Extension.CustomPropertyManager" + Chr(40) + Chr(34) + Chr(34) + Chr(41) + ".Set" + Chr(40) + Chr(34) + "名称" + Chr(34) + ",Right" + _# d) S- m; V! @9 l; B# 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)
  F% E7 m1 U' C% b6 z' C1 R     End If
: a9 b. _4 e+ l/ P. D      doc.AddCustomInfo3 "", "图号", swCustomInfoText, ""$ ^) @" Y& A. N3 h$ h  j+ N
      doc.AddCustomInfo3 "", "名称", swCustomInfoText, ""( a) P+ Q! n* q, v1 [' B( Y7 _
      doc.AddCustomInfo3 "", "图号代码", swCustomInfoText, ST2 D. k2 L+ B; @* x2 W
      doc.AddCustomInfo3 "", "名称代码", swCustomInfoText, SG( E' W9 ]6 t% M' D. S& N

  E- ^5 F% V$ x" H      Set swEquationMgr = doc.GetEquationMgr  F1 \% u3 f7 c% ^3 [) n. d
      swEquationMgr.Add 0, Chr(34) + "A1" + Chr(34) + "=" + Chr(34) + "名称代码" + Chr(34) '添加方程式---"A1"="名称代码"" H" ^( Y4 Y1 x
      swEquationMgr.Add 0, Chr(34) + "A2" + Chr(34) + "=" + Chr(34) + "图号代码" + Chr(34) '添加方程式---"A2"="图号代码"
( i! S* [8 B5 m- P( i. R
. M: o! r' h" p+ V) T! v
& b. B8 E  u) J& gEnd Sub
, Q% d! I! |$ q. {

点评

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

本版积分规则

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

GMT+8, 2025-9-16 23:59 , Processed in 0.069357 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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