机械必威体育网址

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 4889|回复: 13
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
1#
发表于 2022-5-9 15:56:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如下图片,如何用代码实现添加全局变量:A2="名称"? 其中”名称”是自定义属性。
" X; F; F, s- A/ |
( ]3 `+ D# f( }/ \$ u* B0 Z8 \% ?
/ [+ A* v0 B, y+ s5 G
/ ]- A; ]2 c' w' J# c' q

本帖子中包含更多资源

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

x

评分

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

查看全部评分

回复

使用道具 举报

2#
发表于 2022-5-10 08:16:25 | 只看该作者
首先,方程式只能是数值,这很重要。
$ j( f7 }% |  _  _( d+ c  l+ N那么,你自定义属性也得整个数值的,就简单了。
回复 支持 反对

使用道具 举报

3#
发表于 2022-5-10 08:26:43 | 只看该作者

4 R7 Z6 o6 P! M, r  q: L

本帖子中包含更多资源

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

x

点评

全局变量的“值”是数值,用代码可以自动添加。但是,变量的值引用自定义属性里面的名称字段,用代码没搞出来。  发表于 2022-5-11 14:34
变量的“值”一定要是数值,这很重要。至于你说“值”是文字型的,我觉得对于会二次开发的,也都不是事。毕竟汉字,字符对于计算机来说,都是数值。提取数值,再通过某种方式转换回去,肯定可以做到一一对应。  发表于 2022-5-10 08:55
属性那里选数值不是必须的,你那里选文字,然后后边栏里填个数。方程式那边引用这一项属性,出来的还是个数,不影响。 楼主是想用方程式引用具体的文字数据,那确实不可能  发表于 2022-5-10 08:37
回复 支持 反对

使用道具 举报

4#
发表于 2022-5-10 09:36:00 | 只看该作者
你的目的是什么呢?自定义属性可以直接用代码Part.CustomInfo2("", "名称")赋值
回复 支持 反对

使用道具 举报

5#
发表于 2022-5-10 10:10:14 | 只看该作者
方程式只支持纯数值的自定义属性调用,如果调用自定义属性的文本值直接在属性调用即可
0 e, p$ U+ w6 V3 F2 h9 T( ^如图:
: U( \1 @7 a1 c" j0 q! [; y
2 g4 X& h. v9 I3 u0 a1 I! o/ K/ n( C0 H9 T* g

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

6#
 楼主| 发表于 2022-5-11 11:05:30 | 只看该作者
2 j* c$ {. _! @3 G* W' P
我的主要问题是如何用宏代码实现自动添加?
: W; H% T# w5 A0 G3 l3 a  W
回复 支持 反对

使用道具 举报

7#
 楼主| 发表于 2022-5-11 16:41:34 | 只看该作者
swapi 自带的例子,swEquationMgr.Add3 有错?9 y2 a8 ~" U3 [' H3 n
例子如下:
. w% ^  ~- i0 g: R# V5 c# j( yOption Explicit3 c  e6 q- m% N% l8 Y# j
Sub main()
: z- ~+ W' r) {& u4 D
; Y+ g6 f2 p9 J1 ~6 y    Dim SwApp           As SldWorks.SldWorks2 c0 w+ w1 X! k* l
    Dim Part            As SldWorks.ModelDoc27 U* S; C0 M. E  S: x1 x
    Dim swEquationMgr   As SldWorks.EquationMgr' G  M& Z# r# \/ S! v' ]# K- e- V
    Dim longEquation    As Long
. y" p7 w% j. R0 q4 s2 v& \( I) a8 P7 i
; }2 N6 _, ]' ?
    Set SwApp = Application.SldWorks
  q! [# F5 O+ M. O) X    Set Part = SwApp.ActiveDoc2 b' ?) R) I8 c9 S
! f; Q1 d' o! C& @; o2 ]% V
    Set swEquationMgr = Part.GetEquationMgr( G' {: I+ P! W6 T
    If swEquationMgr Is Nothing Then ErrorMsg SwApp, "Failed to get the equation manager"
7 F  q, p2 N0 I% J) i8 w2 J
, ?# t# R3 L+ U- F) f4 u! [! x6 e8 ]1 F- ]+ S/ i* B4 l/ \
    'Add a global variable assignment at index, 0, to all configurations8 `. V$ j! _8 A' w0 m
    longEquation = swEquationMgr.Add3(0, """A"" = 2in", True, swAllConfiguration, Empty)
8 `  a% n" _1 ], i/ [    If longEquation <> 0 Then ErrorMsg SwApp, "Failed to add a global variable assignment"" u( s4 ~! T+ }. `& I

: L/ y* m! P, m8 n- e3 d0 I+ Q2 L& x% h; `# i8 W9 ~8 T
    'Add a dimension equation at index, 1, to all configurations
2 n/ v2 q8 D' J    longEquation = swEquationMgr.Add3(1, """D1@Boss-Extrude1"" = 0.05in", True, swAllConfiguration, Empty)& ?- `8 `# E! T% u( p+ Z. W
    If longEquation <> 1 Then ErrorMsg SwApp, "Failed to add a dimension equation") U0 x; ~2 t. y& b* n" W

8 _+ R1 ^2 t  N7 ?% a; ]( \6 h6 K& U+ W; s
    'Modify dimension equation at index, 1, in all configurations
& x& b* w9 {9 W7 G- }& T    longEquation = swEquationMgr.SetEquationAndConfigurationOption(1, """D1@Boss-Extrude1"" = 0.07in", swAllConfiguration, Empty)4 ^" D& u* l8 l/ h. ?: {, J7 M- n
    If longEquation <> 1 Then ErrorMsg SwApp, "Failed to modify a dimension equation"
7 n9 ^9 b3 l2 m# C" T0 p
) w# B+ W# ]2 @% e" g0 X
, q1 K) V& s! l9 W
/ l( v' r& I- \1 u6 _3 DEnd Sub7 w$ _: T% r# ~' J- U

, A! t! v" ^! ~1 \1 k* l4 A; A$ n: Q& T7 Y1 }' C0 K. p
Function ErrorMsg(SwApp As Object, Message As String): U, [- |& Y" l4 u
    SwApp.SendMsgToUser2 Message, 0, 08 W' @, @3 P, V: i1 \
    SwApp.RecordLine "'*** WARNING - General"
! Z, Y  P- K; l6 c$ z1 ~    SwApp.RecordLine "'*** " & Message- X& `9 ~" \1 |$ P4 S' b* j: _+ c* q
    SwApp.RecordLine ""
" H6 O) [4 T5 M$ f$ QEnd Function+ G/ t7 S8 I; H- p% `. z2 w8 @
! i8 b3 v: H( d' f3 Z
回复 支持 反对

使用道具 举报

8#
 楼主| 发表于 2022-5-24 13:53:29 | 只看该作者
自定义属性内嵌宏代码:图号代码:    "Part.Extension.CustomPropertyManager("").Set("drawingN",Left(Part.GetTitle, InStr(Part.GetTitle, " ")-1))
# ~. S! i2 B  `- H: b名称代码:     Part.Extension.CustomPropertyManager("").Set("partN",Right(Part.GetTitle, Len(Part.GetTitle)-InStr(Part.GetTitle," ")))# {3 r1 H' n- d# m# g
drawingN:
  r/ x" Y: `+ U# WpartN:   
* j7 D# N: m$ O+ {+ ]5 K4 {
! T( b' Z6 e, o8 W
& G9 A0 G" [, F, _$ c: M* w$ {方程式: 目前只能手动
5 t+ ?$ G6 i9 ?A1="图号代码"
& ^8 a( S& l5 \/ c9 OA2="名称代码"& h4 S' |4 y8 J

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

9#
 楼主| 发表于 2023-2-22 14:43:18 | 只看该作者
Dim swApp As Object) p* A5 i4 Z0 J2 R/ j9 ?3 `# g
Sub main()( s+ l8 z$ T3 R# |& S- e; \

$ W. k* `' t& ?9 N7 FSet swApp = Application.SldWorks. s! K! Q( J8 k/ R

& M" X/ g% A  k; F3 f, _9 wSet doc = swApp.ActiveDoc  y" k6 H/ e, @" ?3 q" P
  For Each an In doc.GetCustomInfoNames   '删除所有自定义属性: H' ?7 j) R. R
   doc.DeleteCustomInfo an
3 P1 Y: n9 D2 x. y8 Q9 Q  Next
! u" I/ ~" `$ @# s8 J: J! aDim ST, SG As String
- O9 Z: ^4 _* V1 u+ t      ST = ""' ?2 m' I. S) p0 u0 ]- A
      SG = ""
. r. W% u' b' y8 X$ q# y    If doc.GetType = 1 Then '零件图
# Q2 G1 {2 U1 K: b0 C0 x, u' K) X2 L% I0 J5 _" ~0 K8 I; I
       ST = "Part.Extension.CustomPropertyManager" + Chr(40) + Chr(34) + Chr(34) + Chr(41) + ".Set" + Chr(40) + Chr(34) + "图号" + Chr(34) + _7 u: x1 ^* I/ s( C
             ",Left" + Chr(40) + "Part.GetTitle, InStr" + Chr(40) + "Part.GetTitle, " + Chr(34) + " " + Chr(34) + Chr(41) + "-1" + Chr(41) + Chr(41)( |! X7 j4 k7 I9 a6 _# n
# m+ G4 m3 E! D4 G
       SG = "Part.Extension.CustomPropertyManager" + Chr(40) + Chr(34) + Chr(34) + Chr(41) + ".Set" + Chr(40) + Chr(34) + "名称" + Chr(34) + ",Right" + _0 k" s, _& q/ f
             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( ~; w: z5 J      
3 S. {% Z2 I/ u; J7 r8 I    ElseIf doc.GetType = 2 Then '装配体
4 G4 D7 ]" D/ F/ x0 X      
9 c& d3 T! |" }3 q. e% h       ST = "Assembly.Extension.CustomPropertyManager" + Chr(40) + Chr(34) + Chr(34) + Chr(41) + ".Set" + Chr(40) + Chr(34) + "图号" + Chr(34) + _
' b+ ~; a( W. u- T          ",Left" + Chr(40) + "Assembly.GetTitle, InStr" + Chr(40) + "Assembly.GetTitle, " + Chr(34) + " " + Chr(34) + Chr(41) + "-1" + Chr(41) + Chr(41)
; L$ |% h( b. L1 A& H. S5 ~. d& t! h8 c$ G  o( c- x/ p0 a3 d& N
       SG = "Assembly.Extension.CustomPropertyManager" + Chr(40) + Chr(34) + Chr(34) + Chr(41) + ".Set" + Chr(40) + Chr(34) + "名称" + Chr(34) + ",Right" + _
/ m7 _1 u! g1 K( e5 t  ?           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)
/ C3 V* h; \: q3 ?, d: p     End If
" v9 ?1 u6 h# S+ X      doc.AddCustomInfo3 "", "图号", swCustomInfoText, ""- t% Z+ K) ^/ Z5 H4 `. ^* e/ S
      doc.AddCustomInfo3 "", "名称", swCustomInfoText, ""
; b4 T; L- `1 [( R7 ^- s" J5 Y      doc.AddCustomInfo3 "", "图号代码", swCustomInfoText, ST/ X3 a' t, i) _4 ^
      doc.AddCustomInfo3 "", "名称代码", swCustomInfoText, SG
, y0 p2 W2 Y+ e  @& R4 d3 ^
" D; X8 i- q" V$ O  }$ \      Set swEquationMgr = doc.GetEquationMgr
$ W' v5 B' }; O& [1 _* e      swEquationMgr.Add 0, Chr(34) + "A1" + Chr(34) + "=" + Chr(34) + "名称代码" + Chr(34) '添加方程式---"A1"="名称代码") D5 P" T0 u# v0 c! ?7 l
      swEquationMgr.Add 0, Chr(34) + "A2" + Chr(34) + "=" + Chr(34) + "图号代码" + Chr(34) '添加方程式---"A2"="图号代码"
6 N6 `/ y0 [) \' H/ \8 Y+ }
, _1 a0 Z1 V: i" _- h
: c/ ^! L3 j9 p* h- i0 y( aEnd Sub
& S6 _, f: p  J% [3 A( z

点评

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

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|机械必威体育网址 ( 京ICP备10217105号-1,京ICP证050210号,浙公网安备33038202004372号 )

GMT+8, 2024-12-25 21:35 , Processed in 0.061812 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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