机械必威体育网址

找回密码
注册会员

QQ登录

只需一步,快速开始

搜索
查看: 3176 | 回复: 5
打印 上一主题 下一主题

分享两个宏,有详细注解,可尽情修改使用,代码也一起放了。

[复制链接]
跳转到指定楼层
1#
发表于 2021-1-13 14:11:47 | 只看该作者 回帖奖励 | 倒序浏览 | 阅读模式
/ A. M/ a5 z k3 b: Q
工程图转格式:C+ G, }# |! c4 i
( u- ] |$ G1 e
1 h* O. r- u, G0 C4 A8 Z
Dim swApp As Object
& R/ {! p4 v. q/ C7 J! ]4 X; j3 ^! \' HDim Part As Object
# A( O- n* Z: fDim Filename As String
1 y% S, r- }, C& lDim No As Integer9 o2 ~9 d' P9 a* C$ |
Dim Title As String '以上设定变量
+ O- V- ?& q6 a8 U7 QSub main()( n! A5 g2 \/ z4 a3 f( j
Set swApp = Application.SldWorks
, R2 O# k. {& T: M) N* [8 kSet Part = swApp.ActiveDoc '以上交换数据
6 z/ \% ^: ^6 aFilename = Part.GetPathName() 'Filename为文件名7 [, K- x4 P$ u3 H& A3 w p
No = Len(Filename) 'no为工程图文件名字符串总数/ E) m6 I# b, Y/ ]
If No > 0 Then '当NO大于0时(转换格式名称是工程图名称,故要先保存工程图才可转换,工程图未保存无名称,无字符串,不可进行一下步)
% n' W; m- P. K% _Filename = Left(Filename, No - 7) + "." + Right(Filename, 1) '字串符操作,no-7为去掉工程图后缀名,"."+ right(filename,1)为增加后缀名最后一个字母作为识别,用于区别客户来图,可不要" J* z' }8 m2 r( s: K# c) {$ Z; Q2 ]
Part.SaveAs2 Filename & ".dwg", 0, True, False '输出需要转换的格式文件,已有文件则自动替换,不提示,(有些格式文件在打开状态中不可替换,替换不成功也不提示). H& X7 m6 ~. I$ e# h; [
Part.SaveAs2 Filename & ".pdf", 0, True, False. |) P: K: N( I/ k- ]3 v
End If
4 Z8 r) W& A" p) K, K8 G0 n5 yEnd Sub
& [' H1 `8 o1 R' d, b4 ~% v! `0 [) @9 J
. `" z/ s# q) e1 [( v
# z$ _6 }* [& Q# O- h
属性改写宏:
6 C; Q' j/ V( i: O- A3 j3 N( f2 X' z" C$ R0 p* i8 _
* \6 B) A5 Q9 f; {1 i

, E- k: A: k0 \3 z6 M+ w$ QSub main()% q- `# @/ b3 _3 [) A# ?1 |

* Q# q% {% t% s, hDim swApp As SldWorks.SldWorks
2 j, c# V; R0 O0 ]: PDim swModel2 As SldWorks.ModelDoc27 e5 v- H j: h
Dim SelMgr As SldWorks.SelectionMgr
" O, w9 R2 J- ~# h/ N% t3 K9 I6 qDim vCustInfoNameArr2 As Variant1 R( l& m: z9 P \& m V* a1 N
Dim vCustInfoName2 As Variant0 Q" _' T( _, e E& F5 W v
Dim CurCFGname As Variant0 @( l; Z5 X/ t5 D
Dim CurCFGnameCount As Integer
, N1 W# y% W! M0 q9 f" [3 S0 FDim Vnamearr As Variant
9 {' H8 m6 o+ E; @7 G, `) NDim CusPropMgr As CustomPropertyManager
9 v6 c, O7 N( {3 s h' v FDim bRet As Boolean( y2 u/ {" X7 L- ~
Dim Vnamearr2 As Variant
D& a% U+ a7 A) w9 Z0 w3 i) g& e G( T) u& G, L8 `. r I! g/ E
Dim strmat As String
8 o- Y* k2 S6 |: P8 R4 Z* pDim tempvalue As String& V4 I& l/ Y4 |4 L- m8 W! z
g( I) T: Y4 [0 G
Set swApp = Application.SldWorks+ @9 _7 B ?& S+ }5 s2 n& y; Q7 f
Set swModel2 = swApp.ActiveDoc
5 V: o9 ~, r# Z4 CSet SelMgr = swModel2.SelectionManager '
6 x+ S" F' [( \3 q% }- r
5 h8 I/ v5 K1 `8 O& |, ]! D, HDim tg1 As String; _& O( I' S% ^/ V7 }9 |
Dim tg2 As String. I1 z) `: v/ Z8 h' M5 S8 J
Dim tg3 As String
0 g% A/ l1 y' f6 a4 s a; `Dim tg4 As String
8 ]: ?; ~7 S/ H) TDim tg5 As String# l1 R. M7 ?2 y% E) U9 l
Dim tg6 As String5 C& L L* \' I( K! a G5 l# r4 [
Dim tg7 As String9 F- Q) l. r" C, K7 D1 @5 R0 a) K
Dim tg8 As String+ m. u w3 V7 A2 N; Y
Dim tg9 As String
! @$ x; @2 `/ V) @% V: HDim tg10 As String
: g; j; c1 z2 tDim tg11 As String5 |5 p- T) Y" C" W/ ]
Dim wm As String1 m% W! R& }! e" u1 S+ G5 t
Dim wm1 As Integer
8 z9 g$ @+ g- J* i1 y, d( EDim wm2 As String. b6 y: W$ |0 U% T( K& d8 }
Dim wm3 As String
4 `! Q/ W9 y0 K. s6 VDim wm4 As String
" `) s& X; r; ~. xDim wm5 As String
, j: j7 f7 P3 o2 d. h* J3 ODim wm6 As String% d c9 s1 ?$ a+ x# A& w' P
Dim wm7 As Integer
: s) w) H. k% N4 B& g7 f$ [Dim wm8 As String
! N" j( g. L" p/ e5 L& KDim wm9 As Integer: n9 c6 n0 Q3 _( h6 V
Dim lz As String9 `7 v5 W8 L. D3 \6 q5 S
Dim lz1 As Integer
4 _0 L2 ~5 p' \! RDim lz2 As String
& f; v' S1 O F- G8 B r$ l& bDim lz3 As String
) G! X R& _- N" j5 P X+ pDim lz4 As Integer
! _+ C+ i) b7 z! ZDim lz5 As Integer
8 l* b: I' |# u+ cDim lz6 As String! b$ c' v+ j* X! {! {3 V1 f
Dim lz7 As Integer '以上为设定变量) ?+ {# ^3 u A) T/ V- @. U0 l9 Z

# [7 c* K. }7 V6 U; c
1 ]9 v: R4 n; ^7 iswApp.ActiveDoc.ActiveView.FrameState = 17 R9 U9 J. b6 R. S% X6 e! X' p# R, F
vCustInfoNameArr2 = swModel2.GetCustomInfoNames
6 i2 J" ^) o# T/ q8 w! t; eIf Not IsEmpty(vCustInfoNameArr2) Then
8 W' n( ?3 P8 V+ rFor Each vCustInfoName2 In vCustInfoNameArr2
% J4 M9 R# n8 XbRet = swModel2.DeleteCustomInfo(vCustInfoName2): ]! L+ v$ V: ^+ |
Next5 |8 N3 k4 j7 g- |
End If '此段是删除自定属性中的所有项和其项值. T6 F$ i6 h. \* Z

3 b c$ S; |! c B
5 Y3 L" F& E6 _" O& OCurCFGname = swModel2.GetConfigurationNames
+ h% N0 ^* S& A0 g) I: [CurCFGnameCount = swModel2.GetConfigurationCount
f, @0 B1 w2 ~# }0 R2 e+ \! zFor i = 0 To CurCFGnameCount - 1
" d% b+ k9 g) d# r# [$ ^Set CusPropMgr = swModel2.Extension.CustomPropertyManager(CurCFGname(i))5 H' K# [9 r* F5 Y" z1 C
Vnamearr = CusPropMgr.GetNames
+ n2 n2 c# d1 m0 f: }If Not IsEmpty(Vnamearr) Then$ ]5 ?4 D; U& W
For Each Vnamearr2 In Vnamearr& j: B' c' A' ]$ ]% S% W$ f
bRet = swModel2.DeleteCustomInfo2(CurCFGname(i), Vnamearr2)( l$ p# \: H; U9 h, w' e. s
Next! f6 ^ f, S8 _/ l6 I# u% F' t6 e
End If; Y- V; h+ X4 _5 ^" m, P5 _4 ^
Next '此断是删除其他配置中的属性所有项和其项值
1 i) ^, _/ I$ }- c4 [5 E# j4 I& F

! g& R' N: `0 n7 g9 R! v. T- L" Vwm = swApp.ActiveDoc.GetTitle() '定义是文件名1 Z+ e1 J# n. M1 C$ E
lz = swApp.ActiveDoc.GetPathName() '定义为文件路径- E$ A) q9 P5 G8 ~& m5 r- l
tg6 = Chr(34) + Trim("SW-Material" + "@") + wm + Chr(34) '定义材料属性
4 u# z! `6 t& ktg7 = Chr(34) + Trim("厚度" + "@") + wm + Chr(34) '定义钣金厚度属性
. m* m8 l1 @- ^' C2 p( z% Otg8 = Chr(34) + Trim("SW-Mass" + "@") + wm + Chr(34) + "kg" '定义质量属性8 ~$ I7 a' e: p. N, z2 T0 L
tg9 = Chr(34) + Trim("SW-SurfaceArea" + "@") + wm + Chr(34) + "㎡" '定义表面积属性, c9 c: U% J b
bRet = swModel2.DeleteCustomInfo2("", "图号")
1 L2 U( l/ `" y3 GbRet = swModel2.DeleteCustomInfo2("", "Description")
# ?( {- a) l6 z( e. b& {' N' E* l( j3 g1 I! j# R- A

; O4 ~2 G, X4 K) Y" v* ]wm1 = InStrRev(wm, " ") - 1 '引号内为空格,为图名分离符号 '从右向左搜索到第一个" "符号为第几个字串符
: n# ]) a! u+ s" G" iIf wm1 > 0 Then '当mw1大于0量时3 f- u( V0 ^# Q# s3 W
wm2 = Left(wm, wm1) 'wm2等于从wm的左侧开始提取mw1个字符k; c9 u k$ R+ z9 {3 x; |' v
wm3 = Left(LTrim(wm), 3) 'wm等于wm去除左侧无效字符的左前三个字符4 o/ f6 D) w: o! H
If wm3 = "GBT" Then '当wm3等于"GBT"时: i1 X! b; H# r2 s
wm4 = "GB/T" + Mid(wm2, 4) 'wm4等于"GB/T"和wm2的第4个和后面的所有字符 '当零件是国标时添加国标号,文件名中/是非法字符. Q# g n* C) ~0 u t$ ~( V) _) U
Else
+ V8 C( T% m# H) i: ~& Lwm4 = wm2 '否则wm4等wm2 '空格前面是图号
% h$ I% ^- M! n4 \$ R5 i! O8 _# EEnd If, f8 S, S6 ]; o p9 n. Q

3 K! x! s# J! uwm5 = Mid(wm, wm1 + 2) 'wm5等于wm中的第wm1+2个后面的所有字符
8 ^6 o+ n9 I V- s$ pwm6 = Right(wm, 7) 'wm6等于wm最后面的7个字符2 Q: E$ y' S& c' S! j( X; w
If wm6 = ".SLDPRT" Or wm6 = ".SLDASM" Or wm6 = ".sldprt" Or wm6 = ".sldasm" Then '当wm6等于这4个值时1 Q0 x4 S( s, i, T3 q6 k- f
wm7 = Len(wm5) - 7 'wm7等于wm5的所有字符数-75 i2 h+ g( l0 j+ j, C2 y
Else# ?3 J* o& B; P/ p i
wm7 = Len(wm5) '否则wm7等于wm5的所有字符数# ?! C; @, ?8 r, Y
End If
2 V' D! a6 d3 D2 v1 U \tg5 = Left(wm5, wm7) 'tg5等于wm5左侧的wm7个字符 ,空格后面是名称,有后缀名并去掉后缀名,无后缀后(文件未保存时)直接上档7 m2 @; P1 H4 z0 p! O- m

& a8 n* s+ E) a3 wEnd If '此段为图名分离定义
) a% j1 h% _. @6 u+ j. y3 w P% F
# r7 d4 ]' }& C" D8 L) y( J [( h/ V `% g5 W1 b! b, l
If wm1 > 0 Then '当wm1大于0时
. \& d+ s" A* b9 g1 z" Htg4 = wm4 'tg4等于wm4 '文件名有空格时,图号为分离出来图号7 F) s* b& |0 W6 U# M$ \9 i/ c$ U
Else
- A' b$ J1 J* T; v1 Q1 Wwm8 = Right(wm, 7) 'wm8等于wm最后面的7个字符
& M) E' R l5 S) i0 `If wm8 = ".SLDPRT" Or wm8 = ".SLDASM" Or wm8 = ".sldprt" Or wm8 = ".sldasm" Then '当wm8等于这4个值时" P( C+ P" @: u' o; |
wm9 = Len(wm) - 7 'wm9等于wm的所有字符数-7" Q3 Y' [/ [& n. A8 P6 f y
Else
4 L4 n: Q( g9 C# \wm9 = Len(wm)
( F# Q( y* C# [; lEnd If '否则wm9等于wm所有字符数-7) w! M7 I. S8 z6 ~: T( ]) Q
tg4 = Left(wm, wm9) 'tg4等于wm左侧的wm9个字符 '文件无空格时,文件名即是图号,并去掉后缀名,无后缀名(文件未保存时)直接上档. L2 \: g' _1 B; G/ e+ c+ |$ k8 B- O
End If '此段为非图号名称命名文件,将文件名加到图号属性+ }( A' O) Z! B7 n, X3 r1 E# B
'例,fgq01-001 前门板:分离后图号(fgq-001),名称(前门板)6 ^: A3 b- Z( J+ [
'例,fgq01-001 前 门板:分离后图号(fgq-001 前),名称(门板)9 y9 [. O) c: ~ {$ K N) S! `
'例,fgq01-001-前门板:分离后图号(fgq-001-前门板),名称为空
5 ^0 ~: O) ?+ W8 b'以最后一个空格为准分离
" e! S8 X' c$ J% t9 H3 K2 {" }9 S5 d
: h( Z( |, r7 }5 Z
lz1 = InStrRev(lz, "--") 'lz1为lz由后向前搜索到第一个"--"字符在第几个
: p6 d, z2 w3 C1 U. s! oIf lz1 > 0 Then '当lz1大于0时, g3 ~( K- E9 D6 S1 n* o
lz2 = Mid(lz, lz1 - 8, 8) 'lz2等于lz的第lz1-8个和其后面8个字符
; r$ R$ u" x" R3 ~/ O! @9 hlz3 = Mid(lz, lz1 + 2) 'lz3等于lz的第lz2+2个后其后面所有字符
3 }6 j, i, h3 [( @& alz4 = InStrRev(lz2, "\") 'lz4为lz2由后向前搜索到第一个"\"字符在第几个. z/ M7 B9 h1 K/ F
lz5 = InStr(lz3, "\") 'lz5为lz2由前向后搜索到第一个"\"字符在第几个3 }# i9 O% Z7 L8 J& y
tg1 = Mid(lz2, lz4 + 1) 'tg1等于lz2的第lz4+1个后面的所有字符
! k, D- _1 G9 w2 F! S' ]% {" Z'tg1 = Right(lz2, 8 - lz4) 'tg1等于lz2右侧的8-lz4个字符(lz2总字符为8个)
8 ?; o& ~1 _$ q( t1 o2 N B Ntg2 = Left(lz3, lz5 - 1) 'tg2等于lz3左侧的lz5-1个字符) E: T7 @3 O3 Y
f/ N; K4 D4 a) L) u6 d
lz6 = Mid(lz3, lz5 + 1) 'lz6等于lz3第lz5+1个后面的所有字符
U5 G2 T; Y, m9 u F3 }/ |lz7 = InStr(lz6, "\") 'lz7为lz6由左向右搜索出第一个"\"字符在第几个
' @1 Q8 l$ Z# a# W+ VIf lz7 > 0 Then '当lz7大于0时; A+ m4 r' D9 n
tg3 = Left(lz6, lz7 - 1) 'tg3等于lz6左侧的lz7-1个字符
6 @6 v' a! b* x" o$ B' |End If
' s0 U0 d, a) kEnd If '此段为文件路径提取项目号, @1 T- M# j0 O1 e+ ^% W9 u ^
'例,零件文件完整路径为:E:\工作文档\B-非标产品\非标--F类\FGQ--定制角架\2020版\前门板.SLDPRT
, A# D/ x5 x) U( l# y; L'由后向前搜索“--”,第一个“--”向前到“\”间为产品编号(FGQ),向后到“\”间为产品名称(定制角架),向后的第一个“\”和第二个间“\”,为版本号(2020版)。# v" Y; H6 B7 O6 A) N

$ B( e6 J9 o/ F9 w" L/ m Y, n; ]: l$ w& y W2 W5 {! q" M
1 l6 K5 j( D8 ]$ E" a9 @' R
bRet = swModel2.AddCustomInfo3("", "产品编号", swCustomInfoText, tg1); |. f8 n4 g; A" e8 o1 |+ ]
bRet = swModel2.AddCustomInfo3("", "产品名称", swCustomInfoText, tg2)
1 }! _; R- H/ D* l3 AbRet = swModel2.AddCustomInfo3("", "版本号", swCustomInfoText, tg3), V( j) S, B. s: g8 d
bRet = swModel2.AddCustomInfo3("", "图号", swCustomInfoText, tg4)
' ]1 {6 l0 Y7 ]& Q4 m5 b7 BbRet = swModel2.AddCustomInfo3("", "Description", swCustomInfoText, tg5)' |. f0 f( b/ x
bRet = swModel2.AddCustomInfo3("", "数量", swCustomInfoText, "1")
9 H I& k5 G: B/ @1 gbRet = swModel2.AddCustomInfo3("", "备注1", swCustomInfoText, " ")
' T- J: a/ P* O$ }3 F. w: nbRet = swModel2.AddCustomInfo3("", "备注2", swCustomInfoText, " ")
. ?$ `- A) U9 l8 [bRet = swModel2.AddCustomInfo3("", "备注3", swCustomInfoText, " ")
. g7 j6 {/ ?1 c% }bRet = swModel2.AddCustomInfo3("", "Material", swCustomInfoText, tg6)) B8 v0 V+ C. b' s4 \8 `7 j$ U: o
bRet = swModel2.AddCustomInfo3("", "SH", swCustomInfoText, tg7)
$ @4 o; w, [5 Z0 k: EbRet = swModel2.AddCustomInfo3("", "重量", swCustomInfoText, tg8)
. \$ u e2 q, q0 c9 w5 a& hbRet = swModel2.AddCustomInfo3("", "表面积", swCustomInfoText, tg9) '此段为填写自定义属性项与其值
. O* y1 X/ `* c3 l `0 {
+ |( `5 a0 D% f+ nDim thisFeat As SldWorks.Feature '另外增加一段宏,取读取切割清单数据,并添加到属性项。
( j5 P. s U. c( l3 j$ ?) g* e- |/ ~Dim thisSubFeat As SldWorks.Feature
8 B9 l, W* f; f; p" F2 N! JDim cutFolder As Object
, X& g8 `3 @8 F' `5 EDim BodyCount As Integer
2 q9 t+ w- j! @6 ?3 r0 W( ~8 H* U mDim custPropMgr As SldWorks.CustomPropertyManager' f/ O9 m$ o5 n8 U" R% p8 Z# h
Dim propNames As Variant
1 R2 r3 X: t" K( `. u2 y% K& U7 YDim vName As Variant
# _7 b' [: J2 r0 s2 vDim propName As String+ J2 Q% C9 m: c |
Dim Value As String8 Z, C S- y: o F3 N! ?) ?
Dim resolvedValue As String
1 O1 W2 W" H- d8 O0 U5 d8 rDim bjkcd As Double
) E7 x7 \4 G+ T( K" tDim bjkkd As Double
$ J# s8 q6 E; W5 d1 m1 `'Sub main()
2 t7 W6 O! g' d2 A0 K! z'Set swApp = Application.SldWorks, \8 r$ R- i% q7 l$ j4 L, L
Set Part = swApp.ActiveDoc
# C# k# q) d0 z) }" q- |Set thisFeat = Part.FirstFeature% X1 S; G) L7 v) N* g
Do While Not thisFeat Is Nothing '遍历设计树
; j. N* f" R- {: x8 G, iIf thisFeat.GetTypeName = "SolidBodyFolder" Then1 F7 J, h3 Q) D0 b5 b2 `3 f, |
thisFeat.GetSpecificFeature2.UpdateCutList
: E9 ~; e( T( Y3 v* G- R: oEnd If
3 B" ^5 x8 p, W7 H! u' C Z1 E ]Set thisSubFeat = thisFeat.GetFirstSubFeature0 Y \! l: E9 P1 ?6 U* m6 Y
Do While Not thisSubFeat Is Nothing
' X, u! M I' d- a( K4 l% WIf thisSubFeat.GetTypeName = "CutListFolder" Then '查找切割清单% O2 o$ k* t+ Z! x' U
Set cutFolder = thisSubFeat.GetSpecificFeature2
1 `+ I- ?2 i6 T' C- S' K! v: i$ ?End If' Y, w" X& ]: Y9 |8 M% Z
If Not cutFolder Is Nothing Then
! N; |% s# Q. p$ N9 K- R; `2 [$ ~BodyCount = cutFolder.GetBodyCount6 Y) p# ]' X" K. p; T
If BodyCount > 0 Then
7 O: `! h! [6 V% z7 CSet custPropMgr = thisSubFeat.CustomPropertyManager
% z! R) a* w5 l! R9 u" w4 R) U2 NIf Not custPropMgr Is Nothing Then\# b0 G( S- s3 M N4 N% q; l2 C% G E
propNames = custPropMgr.GetNames '获取切割清单属性的数据全部名称并放入数组2 d# l: d. Q/ p# n5 A) a5 ]$ |
If Not IsEmpty(propNames) Then
7 P$ Y& L; j. U% {% z1 ]" j: H7 eFor Each vName In propNames
5 N$ Y0 D; i; I7 N3 [propName = vName
. l8 U" P4 ?# V& H8 [custPropMgr.Get2 propName, Value, resolvedValue '获取全部属性名称 ,数值和评估的值1 A+ G3 |5 V8 |4 k, L
If propName = "边界框长度" Then bjkcd = resolvedValue '判断是否是自己所需要的数据,如果是就获取* i5 N+ _, R- T8 A# k$ B- j
If propName = "边界框宽度" Then bjkkd = resolvedValue
& w0 W' a! x3 R5 Y1 v7 wNext vName: l/ S( U, }' U# e, f
End If: k2 C/ f0 F6 i
End If
t4 F; `6 S1 u0 {1 Y, i2 a8 PEnd If
/ l/ R9 |' T$ b1 x) d: ~End If7 |5 H( w! l. E% Q/ a4 g
Set thisSubFeat = thisSubFeat.GetNextSubFeature
( T$ H, O5 Y0 ~2 N; v1 z5 \Loop( p- ]/ R9 m% m- v/ K# o9 t9 W+ Z
Set thisFeat = thisFeat.GetNextFeature
8 Z' T. n; v Q5 Q0 b2 x3 BLoop
- G- j) Q0 X5 Q/ G5 b( C$ w# H( H'blnretval = Part.DeleteCustomInfo2("", "边界框长度") '删除属性栏上摘要信息的数据5 }9 h0 Z0 A5 l7 t! x6 Y
'blnretval = Part.DeleteCustomInfo2("", "边界框宽度")
7 u8 K u' J Q: r& m' k1 q |" U- ^( yblnretval = Part.AddCustomInfo3("", "开料长度", swCustomInfoText, bjkcd) '添加数据到摘要信息
2 z. A- `# [, Wblnretval = Part.AddCustomInfo3("", "开料宽度", swCustomInfoText, bjkkd), Z* J3 r4 A& G$ V5 p4 ]

. f2 R- U' D. D# XEnd Sub, u; |0 V' v7 a. d

3 q4 J2 M) a I, o

本帖子中包含更多资源

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

x
2#
发表于 2021-1-13 16:28:08 | 只看该作者
挺复杂啊,比较难用吧??
3#
发表于 2021-1-13 17:17:50 | 只看该作者
这个是不是CAD转pdf的?佩服做软件二次开发的人。
4#
发表于 2021-1-13 17:29:04 | 只看该作者
学习一下。
5#
楼主 | 发表于 2021-1-13 17:40:43 | 只看该作者
晓昀 发表于 2021-1-13 17:17
: N. e# R# {1 G) p4 A这个是不是CAD转pdf的?佩服做软件二次开发的人。
) l! r& M) N& M; r' r& Y* c
cad转PDF,用cad的PDF打印机就行了,这个是sw转dwg,dxf,和pdf等格式的。6 }$ @5 k- N' E

点评

大牛! 发表于 2021-1-13 18:01
您需要登录后才可以回帖 登录| 注册会员

本版积分规则

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

GMT+8, 2024-5-13 10:57, Processed in 0.057909 second(s), 17 queries , Gzip On.

Powered byDiscuz!X3.4Licensed

? 2001-2017Comsenz Inc.

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