最近开始看CAD的二次开发……但是实践的时候遇到一个问题,每次出现ThisDrawing都会出错
+ P; m7 y L4 U+ S& I* XName 'ThisDrawing' is not declared. - z9 y& ^ b+ }+ _( e, L' [ P! _
3 Y! w! g- D: ^( y7 V3 P下面是在网上原样copy的教学程序,可是却在所有的thisdrawing处出错,各位大侠帮忙解决一下吧……many thx……
4 j1 O9 O/ P$ D; t, k8 Z; @ d3 C因为我是菜鸟,可能里面有一些非常弱智的问题……大家见笑了
d7 R) A" ~3 k) e
6 U, l/ t5 I9 G$ m2 `, m' C——————————————- [) X+ p8 u8 |# N
Option Explicit On
3 }5 c- r8 x' _* T% l2 Y3 ]5 iImports AutoCAD
! o, m" \! n) V: E0 p- I9 O+ L4 X& C
Public Class Form1
' m5 K6 d: ?3 M! b Sub Ch2_ConnectToAcad()
. H: o+ f2 ]/ g* j/ ?. l B Dim acadApp As AcadApplication
+ f# N/ D! |- T s$ R& _ On Error Resume Next( M6 k1 j5 V* m4 o* p2 u
2 s' J- u+ ]. X2 G& T9 A8 m
acadApp = GetObject(, "AutoCAD.Application")
; B' V6 J( w$ W2 o% Y2 s If Err.Number Then
3 d1 M) ^! o: L u a7 r4 U Err.Clear(). B; e3 F5 g# }. g1 N
acadApp = CreateObject("AutoCAD.Application")
0 {7 n6 O9 i. X6 b# l& H; ~ If Err.Number Then
2 N3 C! f, Q$ i. m MsgBox(Err.Description)
' ]4 U) A/ y9 s G. F6 h( ~ Exit Sub
/ d( ?! u/ Q7 }, f0 T; G2 _% L D! B End If8 i% k7 W5 ?5 F$ h7 H( z l. ^
End If
7 r1 e% g+ ]" J3 w2 U+ r& u6 ^1 Y MsgBox("Now running " + acadApp.Name + _
/ S9 }: p' w" I. o' J; \' ?$ J) Q " version " + acadApp.Version)
. I2 L% T; x! T' z. T) K
( Y$ F3 |& L: ?- g. i3 I8 I End Sub
9 b" {9 ? _; |! {) `# |' d' l9 _; b7 \
5 n% j7 j/ Y) N3 Z& ]/ w
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load/ Q$ c7 S! ]3 s0 H
! h# D" [5 s3 x2 h3 i7 O) i+ V* N- x( _# o- S, N0 f) n
. P" {8 _& V" H. _$ B End Sub3 X# E2 x# F, Z0 {2 G
" ` b! c* g4 p e5 Z, W o
3 J: e1 |# o2 n. I
|! v; B9 E5 j4 E/ `( N* ] Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
" R0 U& H* C# j. ^
5 l( I+ I: y3 J6 m* X Dim Arc As AutoCAD.AcadArc
5 N6 J; T3 i- H# V' `3 S Dim Pnt As Object
7 Y+ r, Z3 ~6 U! ?3 Z M0 k! F Err.Clear()7 s2 b$ l# q! A
On Error Resume Next
/ }4 n5 ]5 F( h% Q- c5 s
3 J* C9 V0 L* u8 H '选择圆弧: Q0 q- r# E" O* u
ThisDrawing.Utility.GetEntity(Arc, Pnt, "请选择圆弧:")- j2 I8 s2 q0 f0 i( |: X' s
If Err.Number <> 13 And Err.Number <> 0 Then Exit Sub# E9 m, }9 G8 O( Y- E+ Z7 Q% j Q' m
6 Z; [+ U% }& ] Do Until Arc.ObjectName = "AcDbArc"
! U9 H- F: P5 H9 b) P3 `7 ^# Z6 u; ] Err.Clear(), |/ C' I# P/ R2 I/ Y) |, Z* T/ u
ThisDrawing.Utility.GetEntity(Arc, Pnt, "你所选的不是圆弧,请重新选择圆弧:")$ J& l4 G' M$ \5 g# c' X
If Err.Number <> 13 And Err.Number <> 0 Then Exit Sub
8 U5 G- m0 b, E) l Loop$ v/ ]* u6 M! c; Q
3 g+ G$ P% _4 i9 ^/ r3 C '获取圆弧各属性
/ x4 c7 n, z. o' {+ w Dim Leng As Double# E, R# I5 I) E% ~9 t+ {
Dim SPnt As Object9 \1 w9 }* s4 o" `
Dim EPnt As Object
$ W6 T. b9 q2 }3 Q7 F# C5 X Dim CPnt As Object
7 L- {! a: U+ O! a& N Leng = Arc.ArcLength0 h* A. K4 J" v2 ^% s$ L
SPnt = Arc.StartPoint
! Z7 L8 h4 [& g5 @& i! ~8 R% ~2 g, Z1 e/ T EPnt = Arc.EndPoint
& P: j0 R1 @! @; K# f4 C$ } CPnt = Arc.Center1 x% J7 _# [. a* P& Q
2 k- B/ S! i: _
'选择标注点" a. r; I. M5 g
Dim PntforDim As Object6 \- q" n1 o4 L0 Y5 |8 f+ i! K
PntforDim = ThisDrawing.Utility.GetPoint(, "选择标注点位置:")
8 z @9 F9 M& |% o q2 @! I; S3 X
'对圆弧进行角度标注
6 L g/ m" k/ j" l1 h5 @, G Dim DimAng As AutoCAD.AcadDim3PointAngular
" L1 q, n( e7 k4 P' v DimAng = ThisDrawing.ModelSpace.AddDim3PointAngular(CPnt, SPnt, EPnt, PntforDim)5 \0 C9 [3 @. L6 C7 d
9 N8 B' r+ q6 v/ X0 ^ '获取角度标注的精度控制(小数点位)+ J, z6 i- [; |& V0 I3 Z- k6 h
Dim FormatDot As Integer
' J" K) J. Y- _5 h: S Dim FormatTxt As String
, t6 z* x+ p W! k& h0 C& b/ [" T FormatDot = DimAng.TextPrecision
$ C1 C2 p" z. y/ L: ]: n' P: j, m6 w '转换为精度控制格式8 r4 O6 J7 J( m0 f F5 E
FormatTxt = "0."
3 D: I& I. t. ~4 R6 E Dim I As Integer
6 q$ F7 C& b: L, f For I = 0 To FormatDot
9 i3 G8 x' @- K: \8 Q+ i8 n! _; ] If I > 0 Then
9 X: W8 A, }% S. m4 i, h FormatTxt = FormatTxt & "0"; b. L( m( K+ p
End If" E7 t, q& S6 g7 F
Next
, s4 K! [) w% w+ n '更改角度标注的文字内容$ B" \; t. v8 k* t5 B$ T1 G0 l
DimAng.TextOverride = Format(Leng, FormatTxt)
- y3 E- U6 s d# ~
" U! h5 d# q/ w! ^ End Sub
2 J. ]) x: f7 S$ P
% v4 `3 f- n6 N0 C0 ^3 V% y3 Q; V; e: u5 Z% q( X4 ?% U P5 G
% t- q; G# ~6 V7 ~7 f8 T
End Class |