最近开始看CAD的二次开发……但是实践的时候遇到一个问题,每次出现ThisDrawing都会出错+ ]3 @* b, g, m) }
Name 'ThisDrawing' is not declared.
- i! h5 V1 [" z! h. E7 y2 T( {" q
" P: C4 b* \. f0 B' d' H! [7 Q4 G" |下面是在网上原样copy的教学程序,可是却在所有的thisdrawing处出错,各位大侠帮忙解决一下吧……many thx……
4 }* |$ M+ R- Y+ |# Q' A' L- c因为我是菜鸟,可能里面有一些非常弱智的问题……大家见笑了 c- l) J5 m5 {/ A
8 B# p( o3 I& u; d* S: \
——————————————
% }, R" S) @/ \) [$ \( ~5 {0 DOption Explicit On$ d3 `0 P' M/ L5 [, h
Imports AutoCAD
2 l( O* }0 F. Q6 E; s: ~) z' R0 l- H' h) k( w) [# R$ b
Public Class Form1
1 g1 ], o% {- D7 S, z- D Sub Ch2_ConnectToAcad()6 G% c4 T9 h4 c
Dim acadApp As AcadApplication- p, c% j8 k- o; \) j* Z
On Error Resume Next
: d2 t7 v) L( Q
7 J$ Y7 \. R+ O) @4 E acadApp = GetObject(, "AutoCAD.Application")
6 F Y7 D; U3 D" I If Err.Number Then
" \/ _) u b2 _ Err.Clear()+ x$ F# g9 J% J+ K' H w
acadApp = CreateObject("AutoCAD.Application")
8 k, h0 A3 F/ K If Err.Number Then8 E s- a1 S! G; } g4 |7 D! H
MsgBox(Err.Description)5 r+ v9 D6 K" S! C4 A/ E2 J4 z
Exit Sub
- F' S+ Z/ ?7 u, ` End If
( @ F+ P' X% ~( x! I' H& {9 V* F End If
6 H6 d z' C$ l, V- w2 d0 J2 h7 z MsgBox("Now running " + acadApp.Name + _- a) h, ]* [1 z1 n
" version " + acadApp.Version)
6 _3 g$ h9 c. Z) J w% k5 U5 {% ?9 l9 S: h0 G9 P* I
End Sub
& k! f( T5 {; ^. @0 W" y0 y$ ^. Q7 T& x+ z) l1 J
8 P; i' k( R# V! j6 w1 J/ w! @ Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
9 U; y9 ~+ M; n. d. s
) G% G- E8 H: J0 f% A
2 e w7 Y, d# a
8 L! G. T2 O6 f) }, I% H End Sub* r( t' D' ~2 z/ W
1 o/ K0 @( V' o$ Q# g
5 [- p$ D, Q$ c4 j9 [- o9 I
) \) Y% j: B a* ^ Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
/ Z' G! d3 Z- q1 m2 }7 u7 `- ~/ M1 O5 K
Dim Arc As AutoCAD.AcadArc
: U. j; E4 z: j* I' C Dim Pnt As Object
; H( _8 A$ }: Z" w2 u Err.Clear()
/ m" r v5 W" J7 P7 |5 K On Error Resume Next
: H9 W1 q9 \. k. Z7 M9 h& ~/ N8 o8 }5 z- F) `( O$ f3 P% ~- P0 i7 Y9 v2 B
'选择圆弧" P7 |+ j/ v. G2 ^! C
ThisDrawing.Utility.GetEntity(Arc, Pnt, "请选择圆弧:")
% n7 _: k1 B6 G/ h0 W9 N% f8 J If Err.Number <> 13 And Err.Number <> 0 Then Exit Sub
3 | e8 x8 g, m! L
5 Z% \% o0 ^ N Do Until Arc.ObjectName = "AcDbArc"
M. t P3 w: U8 T Err.Clear()
3 b4 ?# W; U+ V( Y$ N ThisDrawing.Utility.GetEntity(Arc, Pnt, "你所选的不是圆弧,请重新选择圆弧:")
+ ? M. J$ J! [5 T If Err.Number <> 13 And Err.Number <> 0 Then Exit Sub" S2 _+ i D$ r7 m
Loop% c' F; p5 o8 \6 C
1 |* Y& |, f- Z
'获取圆弧各属性
7 \/ l# i+ z3 U) q7 k6 u9 \6 V Dim Leng As Double
, i+ E+ l! U+ c Dim SPnt As Object5 | }, y; \! ~. [5 S
Dim EPnt As Object) j# l- l2 d* u; K
Dim CPnt As Object7 ?" w& G7 g% I# i. w9 m
Leng = Arc.ArcLength
9 U- l s) E8 {9 Q SPnt = Arc.StartPoint
9 H% V7 `% \& z: y1 r3 Z EPnt = Arc.EndPoint
; x' I5 t5 O, Q1 g2 f* ] CPnt = Arc.Center
' @ s7 _6 z' C5 Q1 G/ r. A+ ]
6 U* J0 t4 |1 t '选择标注点" W1 M/ V3 c* Y( o8 _' N3 q
Dim PntforDim As Object5 ?/ U3 m! ~# f8 E h
PntforDim = ThisDrawing.Utility.GetPoint(, "选择标注点位置:")- p- R$ y9 q0 D+ h* k/ _: w" x
: E, {2 c! v& Y; x- \7 D( F- y& q' U
'对圆弧进行角度标注
; c- w0 F# j) I2 a& J' w. o Dim DimAng As AutoCAD.AcadDim3PointAngular
/ G* r7 `% b! j DimAng = ThisDrawing.ModelSpace.AddDim3PointAngular(CPnt, SPnt, EPnt, PntforDim)- R: F6 j+ i \! h E
7 x" j1 I6 T8 z4 f' k& d4 R
'获取角度标注的精度控制(小数点位)
A6 a4 ?0 Y/ @! \3 Y Dim FormatDot As Integer
! [1 ]# q- s3 W" S% { Dim FormatTxt As String
m' y+ A W, V; j$ c! N& f g FormatDot = DimAng.TextPrecision& H: l& K6 Z# I) K0 p! i* y
'转换为精度控制格式
0 o; s( N" h/ ~% N2 H m% n& G FormatTxt = "0."
$ i- O( c* A, k8 @9 X0 E Dim I As Integer
- [: F t4 ^/ t( D' m+ o For I = 0 To FormatDot
A9 s# t2 m6 F& n; ~2 |! d5 f+ ` If I > 0 Then8 N0 k0 \0 d4 V" N) x, G9 d
FormatTxt = FormatTxt & "0"
8 l V U& P) |, a& a i End If
7 d+ f! v9 {/ d; q' l6 A" v* i Next
. O; ]# q% v3 y% P! k: v2 { '更改角度标注的文字内容. S) c5 N" x+ O# i1 Y
DimAng.TextOverride = Format(Leng, FormatTxt)
?6 K; ]* _+ e6 L% m) j" j5 F+ q8 t' Q4 r) M- X ]
End Sub
0 i# r7 _9 U* E T# R2 R a! z5 I& Y* O
: P# S' R8 z9 p5 O+ B& d' q* s* _! z3 h3 H0 L+ U' f) `
End Class |