机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 5322|回复: 13

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

[复制链接]
发表于 2022-5-9 15:56:42 | 显示全部楼层 |阅读模式
如下图片,如何用代码实现添加全局变量:A2="名称"? 其中”名称”是自定义属性。
$ X7 C; V+ @3 o1 {& o9 _
& b- P- R8 g8 K% S
" J' E0 `4 A: r- |4 V" K: U
$ W4 R' _* }- N& P

本帖子中包含更多资源

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

x

评分

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

查看全部评分

回复

使用道具 举报

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

使用道具 举报

发表于 2022-5-10 08:26:43 | 显示全部楼层

2 [  ]- o) N+ f% F" G% A

本帖子中包含更多资源

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

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 | 显示全部楼层
方程式只支持纯数值的自定义属性调用,如果调用自定义属性的文本值直接在属性调用即可0 u; P, m9 {' j
如图:+ {1 M8 B# x0 w' @6 Q
+ C, z' M1 ^9 ~  ~4 s/ F7 X

9 v3 @5 \& h) {2 B  Q

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-11 11:05:30 | 显示全部楼层
& y% y" ?' S$ S0 c% f
我的主要问题是如何用宏代码实现自动添加?
5 z7 S5 r- l8 o
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-11 16:41:34 | 显示全部楼层
swapi 自带的例子,swEquationMgr.Add3 有错?
0 T3 s; T: T1 l5 r5 \0 @例子如下:1 G) \" @$ @1 G" F+ ]$ ?4 Z+ K
Option Explicit
4 I' s# C% J1 S: ySub main()
/ o' J) p3 c2 H, z3 P8 b% m% E9 R  I5 }
    Dim SwApp           As SldWorks.SldWorks
( E2 w% n" c5 J& E# X' \4 X1 ^5 r5 D    Dim Part            As SldWorks.ModelDoc2- @! b" f% i1 W. e
    Dim swEquationMgr   As SldWorks.EquationMgr
! C( u0 @9 l& K) r& J: }    Dim longEquation    As Long
; c* h. x6 ~  Z7 W) B+ I9 b0 u' z, {, y3 U7 q5 Y# a
- V9 n: ?3 S  m6 X
    Set SwApp = Application.SldWorks) M# n0 d2 @% t  j  _
    Set Part = SwApp.ActiveDoc
* S$ ~' B) U, C% b8 x* C' W; |8 l1 L! X# x- R
    Set swEquationMgr = Part.GetEquationMgr
! g% C) Y$ r0 l) u! s7 {    If swEquationMgr Is Nothing Then ErrorMsg SwApp, "Failed to get the equation manager"
1 l* Y/ M9 c9 y6 [* A* J3 B; h! m0 W) E; ~9 X
6 Q6 v- F1 T" h2 a. K/ o1 q1 Y
    'Add a global variable assignment at index, 0, to all configurations" U. ^" J2 ~0 Z% @8 s6 V/ r
    longEquation = swEquationMgr.Add3(0, """A"" = 2in", True, swAllConfiguration, Empty)
; Q( k/ y8 n  x, o3 @( I$ ^  [    If longEquation <> 0 Then ErrorMsg SwApp, "Failed to add a global variable assignment"* O0 i: t$ |* }  f

  A8 a3 G1 p. v. ~9 J1 A9 ~# n" Y, h+ b  Q% }
    'Add a dimension equation at index, 1, to all configurations
/ o0 n5 h  M  D% F! e( f* K    longEquation = swEquationMgr.Add3(1, """D1@Boss-Extrude1"" = 0.05in", True, swAllConfiguration, Empty)3 P2 Q6 l+ [% i" B
    If longEquation <> 1 Then ErrorMsg SwApp, "Failed to add a dimension equation"
6 ^  c* y- U8 S3 B+ c: L) o# i  m7 Z% {9 `' V
- X$ X" \6 B9 Y* h8 K
    'Modify dimension equation at index, 1, in all configurations
  K9 y8 N$ C/ j" Q% B" \# c. @7 P    longEquation = swEquationMgr.SetEquationAndConfigurationOption(1, """D1@Boss-Extrude1"" = 0.07in", swAllConfiguration, Empty)
( U7 {( D* R& U$ ~+ Q5 h! q% U2 F) _    If longEquation <> 1 Then ErrorMsg SwApp, "Failed to modify a dimension equation"
8 V# S4 b* V# ], \
% B+ E: ]+ w" s4 \9 n
# \5 a  x5 G2 j- t/ H4 h
7 G0 e% D' v0 ^+ I: d" ~End Sub/ Y5 q2 c3 i/ z- ?. Z- y$ K$ m

  d; t7 u- ]4 B5 l% {8 f2 f  U! r: M* q9 N( i, k( X
Function ErrorMsg(SwApp As Object, Message As String)
$ t- c: X$ ]0 U& N* I5 K    SwApp.SendMsgToUser2 Message, 0, 05 J7 J4 t) n, }3 ~) @/ B
    SwApp.RecordLine "'*** WARNING - General"
8 A' `1 Z3 `1 M9 ?2 H    SwApp.RecordLine "'*** " & Message
0 ]0 H- I2 J  Q8 _1 p; R2 C3 k/ b    SwApp.RecordLine ""5 d6 ]5 x; K- O' T9 N' V5 V
End Function( S% e! r- c, ~% N3 Q

* d0 v  o9 v3 ~" M: J7 g
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-24 13:53:29 | 显示全部楼层
自定义属性内嵌宏代码:图号代码:    "Part.Extension.CustomPropertyManager("").Set("drawingN",Left(Part.GetTitle, InStr(Part.GetTitle, " ")-1))
( }" Q) ~; m  R. R" ]$ d名称代码:     Part.Extension.CustomPropertyManager("").Set("partN",Right(Part.GetTitle, Len(Part.GetTitle)-InStr(Part.GetTitle," ")))
6 z% H( \% a9 P. D) E; `drawingN:. @- p0 y6 k1 ]  G' b- Q4 }
partN:    " `, @* W& E. ]1 K
9 p+ S% Y4 U# f
2 x, r3 \3 A6 d$ t  y
方程式: 目前只能手动) n! S& P% a' p1 `$ r4 d
A1="图号代码"6 K. Q2 ~( G% Z/ C
A2="名称代码"
* P7 C6 |6 b+ S  {: q+ a

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-22 14:43:18 | 显示全部楼层
Dim swApp As Object7 O" Q1 C; Y3 m; E( P. y' D
Sub main()
3 a0 ]# l" k1 j, u; X: B+ C- u( f) E% y! |) X0 q. b: ?
Set swApp = Application.SldWorks* V) L! S. C. c' F2 U
2 B( @) v+ g& {! H  ?
Set doc = swApp.ActiveDoc
! Y0 d6 A" ]3 F% n% Q7 G, I0 t; x  For Each an In doc.GetCustomInfoNames   '删除所有自定义属性
- ~# g' q/ s! X5 ?/ U0 E   doc.DeleteCustomInfo an' d% Z( j8 e5 @, U) s
  Next; |0 j) i6 J( H/ Z0 m. r6 K+ I5 P
Dim ST, SG As String
+ N0 m- d4 m/ e' t      ST = ""
. g: I$ ]+ A. V7 h6 J5 j      SG = ""+ ]( L+ q6 O2 x
    If doc.GetType = 1 Then '零件图
4 e. s7 S4 {: k6 |; V' F8 J' B: b0 b4 j5 R5 |6 I* Y
       ST = "Part.Extension.CustomPropertyManager" + Chr(40) + Chr(34) + Chr(34) + Chr(41) + ".Set" + Chr(40) + Chr(34) + "图号" + Chr(34) + _
& o0 u4 @1 }5 i- F# Q: \0 H. v4 X/ y) m             ",Left" + Chr(40) + "Part.GetTitle, InStr" + Chr(40) + "Part.GetTitle, " + Chr(34) + " " + Chr(34) + Chr(41) + "-1" + Chr(41) + Chr(41)
, O# C% j+ ~' m  X+ z3 x6 U! i+ l) S! L  y7 G# F
       SG = "Part.Extension.CustomPropertyManager" + Chr(40) + Chr(34) + Chr(34) + Chr(41) + ".Set" + Chr(40) + Chr(34) + "名称" + Chr(34) + ",Right" + _8 e) w7 n! F- I; A) p. G
             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)
4 r5 Z, k; e- K) \% [$ ]      9 q7 m. p0 g9 h& s/ D. B& K( y9 E
    ElseIf doc.GetType = 2 Then '装配体: L: S; }0 ~) j/ L0 Y2 s& i
      
( k% I/ E  }. Q* V( C1 Q) ~       ST = "Assembly.Extension.CustomPropertyManager" + Chr(40) + Chr(34) + Chr(34) + Chr(41) + ".Set" + Chr(40) + Chr(34) + "图号" + Chr(34) + _9 p3 O  I* N7 I
          ",Left" + Chr(40) + "Assembly.GetTitle, InStr" + Chr(40) + "Assembly.GetTitle, " + Chr(34) + " " + Chr(34) + Chr(41) + "-1" + Chr(41) + Chr(41)
# M! |# X4 ~% X' X1 H$ x1 |/ j  x2 i1 b  B/ {7 V2 y* B! C1 R
       SG = "Assembly.Extension.CustomPropertyManager" + Chr(40) + Chr(34) + Chr(34) + Chr(41) + ".Set" + Chr(40) + Chr(34) + "名称" + Chr(34) + ",Right" + _9 j' ?; [; q# E! C# M. H
           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)" l1 y3 C& c: x  e  S  R
     End If
* S4 m5 N- V; [* g0 E6 ]      doc.AddCustomInfo3 "", "图号", swCustomInfoText, ""
$ _1 O) d  R% _2 d. z. k      doc.AddCustomInfo3 "", "名称", swCustomInfoText, "") W1 K3 w% B9 A* D! a' p& W: r
      doc.AddCustomInfo3 "", "图号代码", swCustomInfoText, ST3 b9 i# [) s  g; v' o* Y
      doc.AddCustomInfo3 "", "名称代码", swCustomInfoText, SG5 ~6 _  _; Z" j! S+ C, U) M

$ n( w6 d! f2 I7 Y' q      Set swEquationMgr = doc.GetEquationMgr
7 J) S) o- {$ Y  w      swEquationMgr.Add 0, Chr(34) + "A1" + Chr(34) + "=" + Chr(34) + "名称代码" + Chr(34) '添加方程式---"A1"="名称代码"
6 J5 }* g# ^$ }& r      swEquationMgr.Add 0, Chr(34) + "A2" + Chr(34) + "=" + Chr(34) + "图号代码" + Chr(34) '添加方程式---"A2"="图号代码"* H* ^; q- v9 o0 x7 k( [

& q1 W$ g) g) ~/ K" S! f( p" g+ y1 B3 I' `8 ]; |2 W* s
End Sub
2 ~5 ^( e: I$ t; h

点评

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-15 07:05 , Processed in 0.066134 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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