最近开始看CAD的二次开发……但是实践的时候遇到一个问题,每次出现ThisDrawing都会出错% Q7 |" _" \5 c
Name 'ThisDrawing' is not declared.
/ q; B+ R. p. P# d1 J6 z2 \. M1 P" V. B" _ x4 x6 `2 Y. m. ^) n
下面是在网上原样copy的教学程序,可是却在所有的thisdrawing处出错,各位大侠帮忙解决一下吧……many thx……/ j/ ]7 J8 U2 F( R4 o) G0 m/ T! p
因为我是菜鸟,可能里面有一些非常弱智的问题……大家见笑了
/ f* C0 \1 k+ P. u
9 J( [, h2 d' J3 D) O1 n——————————————0 o) n+ N6 a6 B7 X1 ~1 I [
Option Explicit On. ]1 ~# i; w7 l" l
Imports AutoCAD
) k2 M0 \+ z/ w" W' k1 c6 \$ ^9 b5 @$ Q+ S, w2 @
Public Class Form1
' Q/ t6 N+ x. ~8 s7 t( M+ I) _ Sub Ch2_ConnectToAcad()
" C1 K' S* `4 L8 f Dim acadApp As AcadApplication
, q7 l% P+ K Y$ x( k) l3 c. r! T! B On Error Resume Next
1 x6 e) ]7 H h) C7 k* A+ ?% P* ^2 n9 _/ ~
acadApp = GetObject(, "AutoCAD.Application")
6 o8 x0 T4 q- x' K' z3 d If Err.Number Then/ l' Q) `5 p9 z+ b3 S% }3 d
Err.Clear()9 a, s6 x" {/ n0 p7 Q5 i
acadApp = CreateObject("AutoCAD.Application")+ y H* H: Q; ^5 a, U9 A9 l* G" ~
If Err.Number Then, O6 G7 d- ]8 N5 B S
MsgBox(Err.Description)8 m+ f9 w" b9 |; o5 f# {$ S7 X- d+ v
Exit Sub/ A- x/ {# `8 l( i
End If) n+ i3 @. J) ^9 }- u0 R1 t, R* W
End If
1 F2 ^' g, n+ R3 P MsgBox("Now running " + acadApp.Name + _
( s5 P) z; O+ M$ b- V) U; t9 [ " version " + acadApp.Version), f& Y$ R: c$ Z1 u
: s/ P6 @, q- z' [) M End Sub- g) H _/ X' F0 v( \
" a# x1 a8 I" @/ o8 m+ Z# y9 _& ^/ l3 e5 e, ]" @
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
( w3 }- b' {+ @- B# t1 H: T3 a
3 K( Y7 S8 ]+ k' x7 l" }% ?% F$ _5 W: k1 e
3 A% Y4 I0 E( D h
End Sub- f. ?* Q+ w( M% {
, m% Z+ H h' I X
" A, ?0 h7 m" _9 ?; ~
5 T9 h- N7 X1 ]( i: B0 } Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click4 c! O7 J! |, E: ^/ y
3 \) y9 L: y' z- Y/ r5 F
Dim Arc As AutoCAD.AcadArc
5 k& j4 R g2 y5 S Dim Pnt As Object- T& _2 N8 Q5 W$ x Z" F& c
Err.Clear()! d3 o: C3 m/ i u
On Error Resume Next% ]; V1 I) }8 Y3 z' m7 |) H
o, X7 s$ c: r* }( a
'选择圆弧0 b. M; v2 m$ N
ThisDrawing.Utility.GetEntity(Arc, Pnt, "请选择圆弧:")
: i+ w* _' F! _1 W8 l. N0 g1 G If Err.Number <> 13 And Err.Number <> 0 Then Exit Sub
4 p8 C5 y5 V2 u' ?% [+ H
P, R8 N5 c; q6 ~$ O K Do Until Arc.ObjectName = "AcDbArc"
5 w% J& m- U2 f$ m2 D Err.Clear()( i: n7 P7 z; V- @& X
ThisDrawing.Utility.GetEntity(Arc, Pnt, "你所选的不是圆弧,请重新选择圆弧:")# V% f; U9 P% {5 Y$ B9 x
If Err.Number <> 13 And Err.Number <> 0 Then Exit Sub6 v6 F9 @9 t8 p. A
Loop( k) ~ v$ z; h" ~7 z3 s
7 M# U0 F; Z, d5 K
'获取圆弧各属性: }4 B" Q& Q+ [ E
Dim Leng As Double+ F2 {. {- R" x6 E, D+ k
Dim SPnt As Object
& I* S9 b" p& F, d( v8 j' ^ Dim EPnt As Object; t" o$ k. Q# k+ ^, E6 e) T. z' V1 w. P
Dim CPnt As Object
2 }: g: Y$ v; M+ p2 G0 d Leng = Arc.ArcLength: e% q# w6 u3 t$ f# h0 u
SPnt = Arc.StartPoint
- R* }3 L, P! x EPnt = Arc.EndPoint
; v8 }' ?8 h1 b- ? CPnt = Arc.Center5 b1 ?3 S8 E0 X9 S9 x
" d8 Y7 G& y( m. G9 X5 |
'选择标注点: d, p5 z8 t. m; S5 e
Dim PntforDim As Object
# G' R6 U: u% h7 w/ I7 a PntforDim = ThisDrawing.Utility.GetPoint(, "选择标注点位置:")8 A( f! R7 a( ^1 u2 y) \# \4 m. ^
}' c. u3 K4 E
'对圆弧进行角度标注
& {' |) l; _% F* P C9 f( U Dim DimAng As AutoCAD.AcadDim3PointAngular, h( I( R+ Q5 y& j4 D2 [
DimAng = ThisDrawing.ModelSpace.AddDim3PointAngular(CPnt, SPnt, EPnt, PntforDim)
3 T( v& Z5 w1 i) b1 G% j; W7 X6 U9 k' J7 u2 E R
'获取角度标注的精度控制(小数点位)
' _2 \/ h! |0 L: ^ Dim FormatDot As Integer
/ Z0 y) d2 ~( l Dim FormatTxt As String
7 x8 b) S% g" m3 c FormatDot = DimAng.TextPrecision
& |# {0 k) W8 V& l8 I/ m '转换为精度控制格式. d7 O# U6 e3 {$ {- N! ~1 B; S8 H
FormatTxt = "0."
* N; G& Q, K5 e0 O) e- s Dim I As Integer2 n* Q- U* e9 m0 S7 L
For I = 0 To FormatDot
* ^! U% L6 t9 w3 ` If I > 0 Then
# ^# v5 K7 p# d2 W" g- x FormatTxt = FormatTxt & "0"4 s, w& T+ A8 ]( p, H
End If. u# t1 I h5 ]% }7 S6 ^
Next
5 q8 S! P) B# H- F8 \ '更改角度标注的文字内容# f# k# e- c: h7 n* [0 h$ X
DimAng.TextOverride = Format(Leng, FormatTxt)
; M! H5 Y- g2 _/ p% T- O* w2 q6 E" F% V; z7 t; ~( t
End Sub
. Q7 r/ O2 P* f0 x
5 C( a4 g# _+ Q
( W: Y5 j4 \; Y+ J% z5 E6 u4 j! s
End Class |