机械必威体育网址
标题:
分享两个宏,有详细注解,可尽情修改使用,代码也一起放了。
[打印本页]
作者:
tg-000057
时间:
2021-1-13 14:11
标题:
分享两个宏,有详细注解,可尽情修改使用,代码也一起放了。
6 S7 e# l: j2 `
工程图转格式:
, F8 e7 ~* z/ Z# C3 d" o; V
- U6 ~7 u* z0 y6 I! V& @2 ^
& g9 |2 W1 c& |/ w
Dim swApp As Object
% ?& y5 A& \/ e0 p- D
Dim Part As Object
: ?3 T9 l4 z( P6 i
Dim Filename As String
/ ^0 S" w t& V- A4 o
Dim No As Integer
. }* ^+ f7 S8 e* i& H5 Q# ^, I; I
Dim Title As String '以上设定变量
/ K8 v- B/ L5 P" S# J
Sub main()
, H7 a d; e7 \
Set swApp = Application.SldWorks
7 W5 k5 c" J$ w. @2 K: m3 m
Set Part = swApp.ActiveDoc '以上交换数据
, G3 w: c3 m# F" q3 g
Filename = Part.GetPathName() 'Filename为文件名
0 F# [% l4 v- T/ x
No = Len(Filename) 'no为工程图文件名字符串总数
9 x! J4 x, ~: w" [7 F( ~
If No > 0 Then '当NO大于0时(转换格式名称是工程图名称,故要先保存工程图才可转换,工程图未保存无名称,无字符串,不可进行一下步)
9 N8 h' G' @ k# L9 `% @1 A
Filename = Left(Filename, No - 7) + "." + Right(Filename, 1) '字串符操作,no-7为去掉工程图后缀名,"."+ right(filename,1)为增加后缀名最后一个字母作为识别,用于区别客户来图,可不要
- q/ l2 W) O9 }. {- z$ @
Part.SaveAs2 Filename & ".dwg", 0, True, False '输出需要转换的格式文件,已有文件则自动替换,不提示,(有些格式文件在打开状态中不可替换,替换不成功也不提示)
* _* Y; I5 S, y2 G3 c
Part.SaveAs2 Filename & ".pdf", 0, True, False
! O7 C& e* p+ ?5 C: c, X B
End If
/ z) m3 a2 C) G
End Sub
% k' m2 A) M; R# c' `( q* ~ p
2 L3 Z6 D& e! f: D ?
- S( z3 \9 F6 \* t/ O" N5 e4 v
& Q# l8 m2 [3 L+ ]8 f' j( w
属性改写宏:
& t2 p* W# }" Q5 ]
, y4 J9 m% @: F T
) Q" r. C* g' w7 ]
/ V# B5 L/ D5 c4 d, J; J
Sub main()
: g, b1 r0 m' w4 W( j! [
* u% D& r% t. P
Dim swApp As SldWorks.SldWorks
1 K& J( O0 M) k. l9 |! G
Dim swModel2 As SldWorks.ModelDoc2
( q0 P# R5 b$ H7 x& Q
Dim SelMgr As SldWorks.SelectionMgr
6 m, g" A% l( ?. C8 e6 H5 w. v
Dim vCustInfoNameArr2 As Variant
" `$ B# {3 c9 H ]: `5 s% K
Dim vCustInfoName2 As Variant
/ O1 k$ v f+ s/ ?6 ^# C
Dim CurCFGname As Variant
3 i0 i& n1 I! p" x* Y
Dim CurCFGnameCount As Integer
. C- ? X. S% G
Dim Vnamearr As Variant
* m: v/ B* x6 }! K6 o) ^+ `! t
Dim CusPropMgr As CustomPropertyManager
4 v' c7 E- A: c( a
Dim bRet As Boolean
2 t, i7 R0 k) l
Dim Vnamearr2 As Variant
$ d/ U9 T w A/ e
7 j/ M- `8 q+ [* q! J/ C% H6 G" Z/ v
Dim strmat As String
6 ~) Q* [. ?& I5 s
Dim tempvalue As String
& B! l0 ^0 C7 @" x
- u) e* w9 I. a1 i- S. ~, ^
Set swApp = Application.SldWorks
+ \% ^& W8 @% J4 c0 p
Set swModel2 = swApp.ActiveDoc
- i2 Y) T7 l- H/ ^
Set SelMgr = swModel2.SelectionManager '
" t0 o$ W- [1 S0 _/ c! ?# }
+ p8 U' N. Y; x9 k) W- W: A
Dim tg1 As String
3 s3 r- X* n# D2 o+ B4 R
Dim tg2 As String
, s$ n& M$ x+ c5 c) p* [3 o. s3 R
Dim tg3 As String
) h* [, { x! {: q: ^5 ^6 _: h
Dim tg4 As String
+ \% ?$ H* h8 n9 f
Dim tg5 As String
, G1 C/ j$ T1 D. L* V0 e; y2 {
Dim tg6 As String
7 q* p4 J# @) @9 j, ]
Dim tg7 As String
7 w u d; P7 J4 _. U: f$ X$ o
Dim tg8 As String
2 x+ t& s% s1 l
Dim tg9 As String
: E5 p$ f7 z! A3 l; b6 b8 n6 v+ R
Dim tg10 As String
" b3 G0 @* V. q/ z& G
Dim tg11 As String
# f5 o- h% O: h, g5 l2 v
Dim wm As String
( I1 [4 S3 |; O! S8 [; ]# M+ j
Dim wm1 As Integer
% C* I& {# H5 b% f6 B
Dim wm2 As String
m( v7 e0 v& L
Dim wm3 As String
7 V, w' z$ w. H) W/ [5 }+ }' ?
Dim wm4 As String
6 _" e( |' y5 O Y( l6 S7 a3 O
Dim wm5 As String
9 r: N$ I! K) s4 _( Q
Dim wm6 As String
0 w# X ~1 S5 f u
Dim wm7 As Integer
: L- R& R0 H% c
Dim wm8 As String
2 \9 N, W3 b5 Q
Dim wm9 As Integer
& w0 A4 o/ {; A7 E, p
Dim lz As String
4 C/ r3 w; [* Q9 {7 @
Dim lz1 As Integer
t5 G+ X! O8 |7 k' m8 _
Dim lz2 As String
( S( X/ H) F* y. y
Dim lz3 As String
* c; ~; l7 b. v! `, e
Dim lz4 As Integer
" g% ]- q: Y2 x8 l, r) B: |
Dim lz5 As Integer
& | A0 E1 \$ o! [$ e
Dim lz6 As String
( z/ u- @- w7 u$ K) v
Dim lz7 As Integer '以上为设定变量
: L' N U; Y& B
( t$ f- H3 r, o; }0 I
" {( v, V2 j6 h1 h, ^1 f. N
swApp.ActiveDoc.ActiveView.FrameState = 1
" O+ i% ]( U, Q1 G" w
vCustInfoNameArr2 = swModel2.GetCustomInfoNames
# x! \" Q+ g2 V; ?
If Not IsEmpty(vCustInfoNameArr2) Then
q8 P; S" B2 y2 s e
For Each vCustInfoName2 In vCustInfoNameArr2
* f, ^" M; p5 h
bRet = swModel2.DeleteCustomInfo(vCustInfoName2)
% P3 E) k& j, Q/ i+ N2 y. `
Next
" D' w4 H% q2 o* M( C i
End If '此段是删除自定属性中的所有项和其项值
8 U4 D8 _' x( z3 C, l) U) U
; }* \3 d: b' D( @) Y- Q
/ D8 u$ o2 g" E- c' L% h, s' x9 j
CurCFGname = swModel2.GetConfigurationNames
: I2 K/ u( \/ q. E+ q% C
CurCFGnameCount = swModel2.GetConfigurationCount
( v, Q! ~5 P* i% K; O6 z
For i = 0 To CurCFGnameCount - 1
5 c! U3 X2 g1 ]8 t2 A8 n
Set CusPropMgr = swModel2.Extension.CustomPropertyManager(CurCFGname(i))
0 I( y) p! ~5 T) s( c% U' @
Vnamearr = CusPropMgr.GetNames
9 H6 y/ m$ @8 s1 K5 r5 c( }% Y
If Not IsEmpty(Vnamearr) Then
$ ~" P9 L4 R% k6 s/ e& R
For Each Vnamearr2 In Vnamearr
* D' k6 w5 _6 q& g# y ?! E# X, |
bRet = swModel2.DeleteCustomInfo2(CurCFGname(i), Vnamearr2)
4 h$ v1 ~. ~4 s0 A, B- o- N
Next
' h5 m/ B! X2 l3 D1 B
End If
1 @3 f7 s/ V/ o) E4 T
Next '此断是删除其他配置中的属性所有项和其项值
% f- M2 v% p- d2 U
; {0 Q+ q9 U. D# |/ b7 s; U1 g
) O0 [) B& R% b( L6 j
wm = swApp.ActiveDoc.GetTitle() '定义是文件名
. w# d5 F5 A7 q9 Y+ n2 I: U1 p+ q
lz = swApp.ActiveDoc.GetPathName() '定义为文件路径
3 p6 s6 F6 N) x8 A
tg6 = Chr(34) + Trim("SW-Material" + "@") + wm + Chr(34) '定义材料属性
7 B' p7 w: O7 k# n
tg7 = Chr(34) + Trim("厚度" + "@") + wm + Chr(34) '定义钣金厚度属性
, c6 H: ^' K7 B
tg8 = Chr(34) + Trim("SW-Mass" + "@") + wm + Chr(34) + "kg" '定义质量属性
4 X% @- i( ~. D9 f
tg9 = Chr(34) + Trim("SW-SurfaceArea" + "@") + wm + Chr(34) + "㎡" '定义表面积属性
, Q$ e) d* D9 m1 v
bRet = swModel2.DeleteCustomInfo2("", "图号")
! t' D! A1 Y6 J$ N5 I2 p
bRet = swModel2.DeleteCustomInfo2("", "Description")
0 O8 M5 X# _" r; [# A: ~# a6 R* t
: L; [/ u9 l8 h2 }8 D, F
$ z; v$ a& E/ O* j
wm1 = InStrRev(wm, " ") - 1 '引号内为空格,为图名分离符号 '从右向左搜索到第一个" "符号为第几个字串符
; m0 ~( b- r+ [ D
If wm1 > 0 Then '当mw1大于0量时
) H8 \# \" P- Z1 r
wm2 = Left(wm, wm1) 'wm2等于从wm的左侧开始提取mw1个字符
9 a+ `% u+ U+ X+ ]4 C
wm3 = Left(LTrim(wm), 3) 'wm等于wm去除左侧无效字符的左前三个字符
0 F# H3 j- a1 |& a7 W# Y; p
If wm3 = "GBT" Then '当wm3等于"GBT"时
# y9 F# K& N+ E# I8 T- k
wm4 = "GB/T" + Mid(wm2, 4) 'wm4等于"GB/T"和wm2的第4个和后面的所有字符 '当零件是国标时添加国标号,文件名中/是非法字符
. G, Z1 J' [3 u6 U
Else
; m4 a/ k& w( j" _8 W
wm4 = wm2 '否则wm4等wm2 '空格前面是图号
7 L( {# W+ |' i2 m) A3 U+ w
End If
0 M1 o: K' S7 Z9 ]7 ^: V3 z6 l
8 ^. _1 j: t L1 ^3 ~8 h
wm5 = Mid(wm, wm1 + 2) 'wm5等于wm中的第wm1+2个后面的所有字符
% k- q* W& y' N
wm6 = Right(wm, 7) 'wm6等于wm最后面的7个字符
/ x4 c5 _! l r. B C2 H2 f7 W0 t
If wm6 = ".SLDPRT" Or wm6 = ".SLDASM" Or wm6 = ".sldprt" Or wm6 = ".sldasm" Then '当wm6等于这4个值时
6 v) W' p. P0 ^1 d
wm7 = Len(wm5) - 7 'wm7等于wm5的所有字符数-7
; T$ y- O- x+ w# q- V0 m& q
Else
' x5 ?' I7 |$ A& e
wm7 = Len(wm5) '否则wm7等于wm5的所有字符数
6 ]. k( S( t0 l5 J, I
End If
7 Q# q& h4 f! B; s6 k/ y
tg5 = Left(wm5, wm7) 'tg5等于wm5左侧的wm7个字符 ,空格后面是名称,有后缀名并去掉后缀名,无后缀后(文件未保存时)直接上档
3 _9 x5 s6 T* V- L2 g3 l
9 H8 G. ~9 f4 U4 Y! g, ?
End If '此段为图名分离定义
8 |( h; ?' I5 }5 ?
7 k6 q9 Y7 I1 ~6 @
* \. G1 ?' F( n$ x% U- f+ |8 E
If wm1 > 0 Then '当wm1大于0时
- v3 w$ ?- h6 \+ Z
tg4 = wm4 'tg4等于wm4 '文件名有空格时,图号为分离出来图号
) L4 O7 G) L" F3 D) O) x. V
Else
7 w& D/ Z; w: C
wm8 = Right(wm, 7) 'wm8等于wm最后面的7个字符
) }) J {$ r f R% l3 C- M& r; [" N
If wm8 = ".SLDPRT" Or wm8 = ".SLDASM" Or wm8 = ".sldprt" Or wm8 = ".sldasm" Then '当wm8等于这4个值时
1 G9 s. M) B4 K- @! S7 v
wm9 = Len(wm) - 7 'wm9等于wm的所有字符数-7
; z8 w# l: n* `, L! t* P
Else
) x& p4 n/ |& E2 A5 z" G I
wm9 = Len(wm)
) F6 m5 Z; E0 V4 z
End If '否则wm9等于wm所有字符数-7
. K7 I0 M4 ^- d/ h. G4 k
tg4 = Left(wm, wm9) 'tg4等于wm左侧的wm9个字符 '文件无空格时,文件名即是图号,并去掉后缀名,无后缀名(文件未保存时)直接上档
1 `/ S' E# o7 c$ N( @6 u, |
End If '此段为非图号名称命名文件,将文件名加到图号属性
) M0 e& f3 C: g: ~- r: c
'例,fgq01-001 前门板:分离后图号(fgq-001),名称(前门板)
, N+ ?- W1 U6 x3 g! x
'例,fgq01-001 前 门板:分离后图号(fgq-001 前),名称(门板)
; }8 C6 n0 q( H+ v7 H- U% j
'例,fgq01-001-前门板:分离后图号(fgq-001-前门板),名称为空
: H, ~6 q1 A4 a8 ~0 o" ^
'以最后一个空格为准分离
5 e/ M6 v7 i4 g8 ]
8 J1 T6 _( i# T% [8 ?
. {$ g* {4 e% K7 S2 f6 j3 x
lz1 = InStrRev(lz, "--") 'lz1为lz由后向前搜索到第一个"--"字符在第几个
O! L% [! ~9 W; U0 a" D! e5 G* s
If lz1 > 0 Then '当lz1大于0时
' `+ ~0 \9 Z# Y" ?8 w: ]7 g
lz2 = Mid(lz, lz1 - 8, 8) 'lz2等于lz的第lz1-8个和其后面8个字符
" H# a, i" [. j1 q
lz3 = Mid(lz, lz1 + 2) 'lz3等于lz的第lz2+2个后其后面所有字符
6 N4 {9 c1 y, V9 ?* x! v0 G
lz4 = InStrRev(lz2, "\") 'lz4为lz2由后向前搜索到第一个"\"字符在第几个
/ ^( u2 i9 H( N
lz5 = InStr(lz3, "\") 'lz5为lz2由前向后搜索到第一个"\"字符在第几个
d d6 T# s- q$ [
tg1 = Mid(lz2, lz4 + 1) 'tg1等于lz2的第lz4+1个后面的所有字符
5 i1 w. h: [* Q2 a' w
'tg1 = Right(lz2, 8 - lz4) 'tg1等于lz2右侧的8-lz4个字符(lz2总字符为8个)
2 }7 M7 U( o7 W5 S1 ^
tg2 = Left(lz3, lz5 - 1) 'tg2等于lz3左侧的lz5-1个字符
1 C, U# d7 B1 ~2 d' G( d
5 ^7 y) F. ~9 t$ y& `" n+ h/ u! p
lz6 = Mid(lz3, lz5 + 1) 'lz6等于lz3第lz5+1个后面的所有字符
7 L2 _6 K4 A* u2 I- N% t
lz7 = InStr(lz6, "\") 'lz7为lz6由左向右搜索出第一个"\"字符在第几个
& V, }5 S& q+ N3 y% U
If lz7 > 0 Then '当lz7大于0时
2 ]" ^0 ^& }5 O) O& N4 e
tg3 = Left(lz6, lz7 - 1) 'tg3等于lz6左侧的lz7-1个字符
; C Z5 [5 |/ J4 z
End If
' ?! s, N+ g" N+ s; J
End If '此段为文件路径提取项目号
! z9 [' ~2 I& l& O ]+ w0 K4 V1 k
'例,零件文件完整路径为:E:\工作文档\B-非标产品\非标--F类\FGQ--定制角架\2020版\前门板.SLDPRT
: z: h/ a9 @1 \9 }
'由后向前搜索“--”,第一个“--”向前到“\”间为产品编号(FGQ),向后到“\”间为产品名称(定制角架),向后的第一个“\”和第二个间“\”,为版本号(2020版)。
' t, s* y9 g9 x% k( P6 |6 H. a( k; f
9 Q0 S, O- {1 A& @: o
3 g, s. Y: [. W
# V+ }8 S* ?; G& v7 K0 j) ^
bRet = swModel2.AddCustomInfo3("", "产品编号", swCustomInfoText, tg1)
- e+ C' }8 I. m" k
bRet = swModel2.AddCustomInfo3("", "产品名称", swCustomInfoText, tg2)
- Z# d; U/ i" U( l& v: S
bRet = swModel2.AddCustomInfo3("", "版本号", swCustomInfoText, tg3)
# m" m9 H; K4 @2 P, Y3 ]" X: n
bRet = swModel2.AddCustomInfo3("", "图号", swCustomInfoText, tg4)
; r. X1 C" {, ?7 L
bRet = swModel2.AddCustomInfo3("", "Description", swCustomInfoText, tg5)
, E o: v, y( ?. f. x$ W
bRet = swModel2.AddCustomInfo3("", "数量", swCustomInfoText, "1")
4 H( U3 {5 Q" n3 `
bRet = swModel2.AddCustomInfo3("", "备注1", swCustomInfoText, " ")
+ J J. w) A; u4 c0 N* t
bRet = swModel2.AddCustomInfo3("", "备注2", swCustomInfoText, " ")
! E/ N: c& I) S& X; o* e
bRet = swModel2.AddCustomInfo3("", "备注3", swCustomInfoText, " ")
t4 ^6 T c7 s" s5 O
bRet = swModel2.AddCustomInfo3("", "Material", swCustomInfoText, tg6)
* V- T: T+ }& I2 m, K4 X# M# ]/ {
bRet = swModel2.AddCustomInfo3("", "SH", swCustomInfoText, tg7)
. F& h8 @6 f( F' L m2 Y- }
bRet = swModel2.AddCustomInfo3("", "重量", swCustomInfoText, tg8)
3 G( U$ E$ @% l
bRet = swModel2.AddCustomInfo3("", "表面积", swCustomInfoText, tg9) '此段为填写自定义属性项与其值
! @. _, T9 u" k8 @) S
- M) {3 V3 {/ Y1 N0 h
Dim thisFeat As SldWorks.Feature '另外增加一段宏,取读取切割清单数据,并添加到属性项。
4 ^# [ y& f J) {% y4 s% S7 s
Dim thisSubFeat As SldWorks.Feature
# f. r$ P# ~3 Q" @+ [
Dim cutFolder As Object
. c7 G3 y4 E9 q- P; `! {% {
Dim BodyCount As Integer
- v7 U( B* L# W! D& q9 n Q
Dim custPropMgr As SldWorks.CustomPropertyManager
0 ]+ T1 V5 { g3 J
Dim propNames As Variant
2 w) y! C" |9 h- h
Dim vName As Variant
, w$ y2 _5 K, h- P1 t+ v6 o
Dim propName As String
5 g7 x6 N; Q" I; t! \# a% S/ z
Dim Value As String
" O( F. J" N9 k3 _
Dim resolvedValue As String
& o7 ^& u4 \; H% J7 Y; @/ v4 t) O0 F
Dim bjkcd As Double
3 F" n# d' c! |, W
Dim bjkkd As Double
( ]2 a4 q" e! {/ @" Q7 Q; B1 t
'Sub main()
+ Q" E! Z$ j4 m% e5 X2 W
'Set swApp = Application.SldWorks
. m* J: q7 z$ v# ?9 H N
Set Part = swApp.ActiveDoc
. n5 R# S+ H3 C( y
Set thisFeat = Part.FirstFeature
2 V+ o4 Y' l$ I+ }
Do While Not thisFeat Is Nothing '遍历设计树
5 a2 N0 B- I2 K# v, q7 k% q
If thisFeat.GetTypeName = "SolidBodyFolder" Then
9 T2 e! W$ Q9 R
thisFeat.GetSpecificFeature2.UpdateCutList
& m: {9 a. T% e% f p5 D* U
End If
( i" l& g/ I* O* C4 [6 U
Set thisSubFeat = thisFeat.GetFirstSubFeature
3 o( t) x, S. @2 e* c
Do While Not thisSubFeat Is Nothing
. z0 z' x& a( h6 f0 e
If thisSubFeat.GetTypeName = "CutListFolder" Then '查找切割清单
( E# Y# N- O2 ?( ?
Set cutFolder = thisSubFeat.GetSpecificFeature2
7 o1 l! L( @0 E3 a8 I
End If
: ?/ O% ]* [" a# S8 b' o1 t
If Not cutFolder Is Nothing Then
# b) f! f" {% A8 R8 _0 O
BodyCount = cutFolder.GetBodyCount
4 P& @+ X; Q! j/ b
If BodyCount > 0 Then
& f/ e, k7 i) J- a+ _
Set custPropMgr = thisSubFeat.CustomPropertyManager
. |: x5 k# D6 U1 O1 ?2 P$ U/ q
If Not custPropMgr Is Nothing Then
: k" x3 k2 E9 X
propNames = custPropMgr.GetNames '获取切割清单属性的数据全部名称并放入数组
5 h; `. P* a" E& s9 I& j! G
If Not IsEmpty(propNames) Then
6 B7 b3 R _5 p- ?0 P
For Each vName In propNames
6 [( \2 B! q; X) O& t, u3 X
propName = vName
' R8 G( ~' U/ i+ v$ O# y
custPropMgr.Get2 propName, Value, resolvedValue '获取全部属性名称 ,数值和评估的值
2 |! D$ D# Y) T( U6 f9 z4 f% A* C
If propName = "边界框长度" Then bjkcd = resolvedValue '判断是否是自己所需要的数据,如果是就获取
3 w8 B' _& i4 J5 K, _3 e
If propName = "边界框宽度" Then bjkkd = resolvedValue
: c) M" \% R/ \( |
Next vName
1 x g; j+ t1 ]& v8 B: |& f6 j
End If
v' W2 J }" q# E1 e/ W- {$ r/ J5 i
End If
( ]0 l# l! p7 c$ U% q7 \
End If
, }, W# n9 P; ^" ~/ j4 v1 S( l) ]- _) L
End If
( g* o2 t6 H( z( g7 @, q( B/ o- m7 ]
Set thisSubFeat = thisSubFeat.GetNextSubFeature
+ ~: n3 H* ?( y' V* C" E
Loop
$ _: n7 b7 i# s4 j! m; S+ [
Set thisFeat = thisFeat.GetNextFeature
, A# t: P4 |1 A) `5 W3 Q0 a5 D$ ^% I
Loop
6 X& x! o0 _. c' w# l
'blnretval = Part.DeleteCustomInfo2("", "边界框长度") '删除属性栏上摘要信息的数据
: T$ w0 r2 i" B( e9 b3 f! z z w' ~
'blnretval = Part.DeleteCustomInfo2("", "边界框宽度")
8 O8 W& u& x" q8 w
blnretval = Part.AddCustomInfo3("", "开料长度", swCustomInfoText, bjkcd) '添加数据到摘要信息
8 T# j% a% x8 \2 \; H8 x, I1 Y# Q; g
blnretval = Part.AddCustomInfo3("", "开料宽度", swCustomInfoText, bjkkd)
6 t2 n W; m! `
3 }2 N) [, r% X, `
End Sub
; b" b; _0 J; `/ K
; ?9 ^0 l+ [5 ^/ G; ^. A2 b' F7 [
作者:
远祥
时间:
2021-1-13 16:28
挺复杂啊,比较难用吧??
作者:
晓昀
时间:
2021-1-13 17:17
这个是不是CAD转pdf的?佩服做软件二次开发的人。
作者:
柴荣1917
时间:
2021-1-13 17:29
学习一下。
作者:
tg-000057
时间:
2021-1-13 17:40
晓昀 发表于 2021-1-13 17:17
* D t- N" {% U/ f
这个是不是CAD转pdf的?佩服做软件二次开发的人。
; A: S9 W# i$ {4 d, F) N
cad转PDF,用cad的PDF打印机就行了,这个是sw转dwg,dxf,和pdf等格式的。
. N$ C0 t3 F9 B2 q) ~: p& c
欢迎光临 机械必威体育网址 (//www.szfco.com/)
Powered by Discuz! X3.4