最近开始看CAD的二次开发……但是实践的时候遇到一个问题,每次出现ThisDrawing都会出错/ ?9 M# j# r8 w' R2 }0 p
Name 'ThisDrawing' is not declared.
% r+ O& {* Q, R g, b2 k1 v+ q' u: e/ j
下面是在网上原样copy的教学程序,可是却在所有的thisdrawing处出错,各位大侠帮忙解决一下吧……many thx……* d' ]3 D& z. h* C* R9 ?7 V" ^/ i5 L
因为我是菜鸟,可能里面有一些非常弱智的问题……大家见笑了' S8 p, X' }9 l% g- q* B8 o
! ?& s& M* n* q. |( t( B- g
——————————————$ R. F, H' [! c- f& L( D
Option Explicit On
( D9 E- i2 w% U% @; }1 cImports AutoCAD
+ T8 { ]- s+ b+ z2 J6 R L6 @# C6 R
Public Class Form1
& N8 \' H3 m! C. N, @ Sub Ch2_ConnectToAcad()
6 [+ ^! E3 }8 n Dim acadApp As AcadApplication
1 E% f% e; D4 j8 }* j On Error Resume Next M. j# Q3 }9 f% L9 O9 w
: _' x* |: W* A acadApp = GetObject(, "AutoCAD.Application")- \9 j0 w+ e4 J! i' a& U3 i
If Err.Number Then& d5 I4 v9 c) Q/ V/ H9 R3 [
Err.Clear()
& Q: `. M& w- O9 r5 J+ J9 t acadApp = CreateObject("AutoCAD.Application")
/ ^; g2 l. z) @$ z7 K If Err.Number Then
8 c( M/ I2 _7 w0 a" U3 ~& ^2 b! c MsgBox(Err.Description)& a- h' S# L w( F
Exit Sub9 r6 |- q, `, c- W' p# P2 k
End If
7 E6 w+ Y" _4 y& _2 V9 T) Q6 C End If& b* o1 k# T$ R+ X V
MsgBox("Now running " + acadApp.Name + _. z. Y$ n: X6 }# y% q
" version " + acadApp.Version)% b# ?% J5 Z5 X9 ?0 U) I7 D
4 j" i% d) E! v K
End Sub2 G1 M& O; H$ V, _9 o3 P
9 v1 n9 \+ h, l# K8 d
r0 d! ] d) E+ i5 c2 P Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
. r( z; z( ^% | e" R0 ^0 ~8 [+ {, ~* b% C2 d5 o/ _( e
! h. g s/ a. P# B$ `
9 H' I' e! ]* q End Sub6 ~% ?* l( Q. o* k. O" @! Q
5 }! T9 ~/ t8 }$ V0 x/ \9 \) p0 l/ C
8 O8 C% q1 C9 ]( C5 r Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click& h! L2 J5 e6 q: v" f5 D; v
# P$ L5 _0 ]8 N! W( F4 q Dim Arc As AutoCAD.AcadArc
/ b# Q0 H, q1 w Dim Pnt As Object
& J% L& i, p& n, q s0 W. T. f- b' M Err.Clear(); }2 ~, Q; [& g4 {1 @6 ~8 A
On Error Resume Next
2 ?& C! A" k5 K0 I" h
" S: l% o( s& ]9 x8 |8 B0 ~& g '选择圆弧3 q( i& H7 ~6 u9 P" M
ThisDrawing.Utility.GetEntity(Arc, Pnt, "请选择圆弧:")
- G0 C# a! E8 l# ^* v) B If Err.Number <> 13 And Err.Number <> 0 Then Exit Sub" A Q" l, q/ W' g3 E4 k: x. z' p
9 y8 J2 v( G Z0 k% L) B5 J Do Until Arc.ObjectName = "AcDbArc"
' a0 m9 Z) ]/ P' ~, f" n& t* z Err.Clear()( Y+ T* e2 z+ w0 P) C
ThisDrawing.Utility.GetEntity(Arc, Pnt, "你所选的不是圆弧,请重新选择圆弧:")
+ j: Z9 U9 A+ X If Err.Number <> 13 And Err.Number <> 0 Then Exit Sub7 j; w0 I. p [* a1 l
Loop6 E& K- b" D! p
% M7 t. M# i5 P3 t$ M+ ]5 t
'获取圆弧各属性
' T7 a G4 B1 N Dim Leng As Double8 Q: Y$ v. u; a6 z
Dim SPnt As Object+ n. t/ X( _) P
Dim EPnt As Object
) Q- F! p: x& @# y2 q Dim CPnt As Object
9 I' `! f9 ~; I% G& X9 C Leng = Arc.ArcLength
; |; [1 b! _ D$ y1 _6 z; v SPnt = Arc.StartPoint+ X: \& h2 @7 x: S D5 f
EPnt = Arc.EndPoint" |2 j7 ^; D. w! x8 ~: s6 ?
CPnt = Arc.Center, t3 ^+ k' w* a k
) F2 g$ Z$ e/ n$ p5 ^4 E3 X '选择标注点
% \2 V5 x0 D8 D) l' {8 X Dim PntforDim As Object- @( K+ o( [$ L% O. t
PntforDim = ThisDrawing.Utility.GetPoint(, "选择标注点位置:")
. L1 D: W% ]5 g: V8 b% O+ \. G* {8 g. J" u0 k2 K
'对圆弧进行角度标注
) k- Y+ [' u5 @9 ^6 j) Y Dim DimAng As AutoCAD.AcadDim3PointAngular* e# F$ {8 x( V( g
DimAng = ThisDrawing.ModelSpace.AddDim3PointAngular(CPnt, SPnt, EPnt, PntforDim)" N+ I6 J# Q$ \/ V% W* H8 w' K9 Q
" U" l) x6 z. \. O3 [
'获取角度标注的精度控制(小数点位)! l. P$ y2 P$ J
Dim FormatDot As Integer/ c4 H' Q6 C. r! g2 j6 I4 U
Dim FormatTxt As String2 O$ A' z9 u. `
FormatDot = DimAng.TextPrecision$ \& k/ u: I8 L$ G z' c# ^, ]
'转换为精度控制格式
7 ?+ @3 v! x K8 i9 Y* r FormatTxt = "0."0 m2 Y+ v9 E+ A9 Y
Dim I As Integer2 Q5 _; D4 D- j$ l4 @9 |
For I = 0 To FormatDot: q* D F0 m: Q8 ]
If I > 0 Then1 ~" |' {- W. `/ ~0 s
FormatTxt = FormatTxt & "0"
! c& f/ W% }# B& j f End If ~2 I0 Y. c$ C
Next7 y- l1 {, d, M! ]" D$ h1 a; V6 t
'更改角度标注的文字内容
* c3 {! ?" Q# Q DimAng.TextOverride = Format(Leng, FormatTxt)2 H, C/ l" W9 v5 X6 T1 Y
3 z% x4 ^; K h5 j1 X( z
End Sub! F' _2 m# v0 \/ w2 X' H
/ }& a+ P+ l2 k, A, D8 Y9 y
0 Q/ P8 ~0 u7 ?1 W. g, @
1 f& C2 D# ?$ q [End Class |