最近开始看CAD的二次开发……但是实践的时候遇到一个问题,每次出现ThisDrawing都会出错
+ k, a8 i; V* y2 }( g% M8 ^5 |Name 'ThisDrawing' is not declared.
m$ e) P4 G! b7 l0 }0 l! d# F% e" _9 b% x% ^4 h7 o! w
下面是在网上原样copy的教学程序,可是却在所有的thisdrawing处出错,各位大侠帮忙解决一下吧……many thx……
7 i1 g$ V0 c, y, q3 Y" A1 P, E; `因为我是菜鸟,可能里面有一些非常弱智的问题……大家见笑了
9 J$ c! W! ^6 j0 r e6 K5 s! M$ Z9 }; o
L5 x' x+ S) J——————————————" {4 m% ]8 p: u7 T* _" l
Option Explicit On7 }/ ]6 n5 c7 ^) v' q1 n, b1 r
Imports AutoCAD
& A; Z* [2 [% L
7 `* p+ ^4 Z# s3 C _Public Class Form1
; ~! G/ s6 k( @9 D; X7 Y z' E% g Sub Ch2_ConnectToAcad() c5 p5 L) q4 i8 j- M) |7 ~! f
Dim acadApp As AcadApplication
?+ U" z3 k5 j6 U& K2 O% | On Error Resume Next
, r) |" S) Q/ `. d( m) i$ x
2 M/ J; L9 H; ?4 H* L( r) w acadApp = GetObject(, "AutoCAD.Application")' o: J- I7 e( T. i* e$ z( P0 l
If Err.Number Then
" e/ {' B4 u- q% a Err.Clear()
4 h0 E v% o! ^* b acadApp = CreateObject("AutoCAD.Application")
3 r* g* U" [+ e( A( V2 U If Err.Number Then, g8 m8 [ v# y* b
MsgBox(Err.Description)9 `! C: l9 \2 @3 z$ s
Exit Sub
- p- f* D1 B3 N4 n% l5 }! E/ f End If
: o Q! B( s0 U x3 x- B% \0 O End If, @) @/ N. q2 B. Y
MsgBox("Now running " + acadApp.Name + _
7 m0 ]. F4 i% p! M1 T: ? " version " + acadApp.Version)
6 Q! j* J* ~" v' J- b/ d' T6 [' f+ o3 ?
End Sub; g. \, y+ @% L+ X( u9 |
$ ]2 ]' O. Y- }8 s4 R0 y
" j- x4 ]& Y9 H3 f Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
9 r0 _1 L3 j. O9 [; v) `1 l
( \9 E4 @" p# l, Q) c! \
! R* ?2 R) H, j0 J* G& G; U0 H4 I @8 V/ |& k; L' }+ p
End Sub: A% A0 q1 W) m/ `$ q+ @
+ M X7 x1 j/ A, J/ d0 p9 l
0 j8 N: q0 ~3 T; I
& Y# f# u* X3 ]. n
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
7 Z; }( [) v! A$ o3 T' L/ {# c$ s* I0 ?: b
Dim Arc As AutoCAD.AcadArc* S3 V8 B' C! s3 r( Q! \2 U
Dim Pnt As Object
1 O4 f5 F1 ]( r4 B ^/ ^; }* E1 a# x5 Y0 \ Err.Clear()
* M+ R" e3 ]* R2 k( r+ [7 o On Error Resume Next
- T5 s) z5 [8 ~$ d0 ]/ r3 P( q3 v* p: S; |( v5 C
'选择圆弧8 f- v5 ^% d2 |* U* p0 i
ThisDrawing.Utility.GetEntity(Arc, Pnt, "请选择圆弧:")
# D2 ^: ^$ a, S, {5 e, e6 ~ If Err.Number <> 13 And Err.Number <> 0 Then Exit Sub( p: w7 M/ h, t$ b
% H; n4 A# P- m6 h& p. X* R, f Do Until Arc.ObjectName = "AcDbArc"5 B. J3 ]. R/ E. p6 \5 x
Err.Clear()4 u5 a; t a. v: t( X; J
ThisDrawing.Utility.GetEntity(Arc, Pnt, "你所选的不是圆弧,请重新选择圆弧:")
* m$ y, ~& H* I( T" k& C, D) } If Err.Number <> 13 And Err.Number <> 0 Then Exit Sub; C) G" T- x' R& u3 ?+ F
Loop; ?$ R( G$ ]* B* n* `) f
/ \& ?8 g% D4 R4 J- f+ Z: A, x '获取圆弧各属性
$ Z% \6 C3 m0 P8 U8 I& w3 P9 T Dim Leng As Double8 c% [4 ]2 X$ q% n
Dim SPnt As Object
3 m* @- I$ `' O1 n( c* B Dim EPnt As Object& w5 Q* F1 Y- ^$ r' q! Q5 {4 p6 W
Dim CPnt As Object
) R( P: H) i' C+ K( h* d* s Leng = Arc.ArcLength
/ y2 I) }( Y! k$ m/ r' H' x SPnt = Arc.StartPoint
& [( z! x; B4 f" q( A3 Q EPnt = Arc.EndPoint; u y! c7 v/ M, E& g( f
CPnt = Arc.Center
, H' q3 c9 u; {' z2 f6 A
1 t8 [4 B. }7 t$ |, x4 c '选择标注点" D" W' ?4 p: b" Q
Dim PntforDim As Object" S6 V. t$ k1 B4 {, f
PntforDim = ThisDrawing.Utility.GetPoint(, "选择标注点位置:")
" @' Q4 t% X# g. F' T) }: I7 }# r6 v3 e3 s. s
'对圆弧进行角度标注
) X/ z, K6 x- P! V) J* z& v5 U5 ^7 s Dim DimAng As AutoCAD.AcadDim3PointAngular. X& D1 X) Y# `3 P- O [
DimAng = ThisDrawing.ModelSpace.AddDim3PointAngular(CPnt, SPnt, EPnt, PntforDim)
. E5 t. g0 e) V; ?
( G9 O: O) {' Z8 y' s3 B( ` A5 W$ r '获取角度标注的精度控制(小数点位)
1 F. \6 ?( _" i% | Dim FormatDot As Integer
7 k' Z9 W; Z3 z: h, G Dim FormatTxt As String
! A0 v ]% o) Q5 L1 L FormatDot = DimAng.TextPrecision
' b- h) H) c u6 }1 ^3 ` '转换为精度控制格式' K' [+ s1 {% @# [. v' R! d* N
FormatTxt = "0."4 B; ^( X: U7 ]' d& H
Dim I As Integer* d. D. X3 \2 _, m* V
For I = 0 To FormatDot
( B$ t9 v! J c7 h( {& [9 o0 ` If I > 0 Then
' X9 j2 F, M. v8 K5 P% [ FormatTxt = FormatTxt & "0"7 c# v4 X/ v3 q% @6 |+ h& M
End If
: T6 i8 |: G* k& k# H Next
8 m0 v4 e1 `& O; ` '更改角度标注的文字内容
+ B2 R& R4 Y- I* D9 n0 Q DimAng.TextOverride = Format(Leng, FormatTxt)
: [1 z9 E! T" J$ T$ A7 t2 z) k$ K! g0 P; o
; C9 {$ G) y- L# h" N( S1 X& A End Sub4 E; `# a, p! k: j+ r
. x' z* k3 b9 V! @3 D7 X+ I9 Y
7 v6 K$ `8 Y1 n+ e) P7 `! C/ G: N7 x5 L$ G- H
End Class |