最近开始看CAD的二次开发……但是实践的时候遇到一个问题,每次出现ThisDrawing都会出错' y" ?+ b: _. R$ j4 r! S( B
Name 'ThisDrawing' is not declared. 5 C' H' W/ E( t# `( p/ @1 A+ E
) S! g5 s# M3 P5 r
下面是在网上原样copy的教学程序,可是却在所有的thisdrawing处出错,各位大侠帮忙解决一下吧……many thx……1 I* a. V3 s: t) ]+ r
因为我是菜鸟,可能里面有一些非常弱智的问题……大家见笑了$ F4 j A7 i4 H4 B q5 v
6 E+ S, S, t, @- G& i. E
——————————————
' j* d* c8 v5 M, y& s; A/ eOption Explicit On& u, n* `4 s/ o0 O4 K/ K- P
Imports AutoCAD
6 Z' X# [/ R P5 C3 X, b, r3 z4 k: t* q; J/ r
Public Class Form1) d, A, g! Z6 H$ ^% s5 T. P
Sub Ch2_ConnectToAcad()% z, u5 M; F- B% l
Dim acadApp As AcadApplication
. V& z$ H) U5 s3 k5 S+ c7 T On Error Resume Next' v& u& _ k9 q
( }- ?- \! v2 b" F. n: } acadApp = GetObject(, "AutoCAD.Application")
+ e; p* t* M& g5 U8 l If Err.Number Then
4 ^+ ], V9 g [* S% [3 ~6 K$ o Err.Clear()- I8 H" S4 ]$ |/ K6 g
acadApp = CreateObject("AutoCAD.Application")5 A% O8 G9 s# w3 L
If Err.Number Then
, \) n" \# L. V( J1 a MsgBox(Err.Description)
9 x: c, ^9 k0 V: j Exit Sub
: y2 X2 c. M* Y4 E End If
/ |4 `5 H I# h End If, k* X' s; K X" h+ q5 s. N* E' ?; V
MsgBox("Now running " + acadApp.Name + _
" M* K- }9 F1 {6 N- N$ k " version " + acadApp.Version)6 F4 `1 v; ]; X
. V( t& T# K1 Z3 `- A5 q
End Sub* z8 p4 q9 K0 c ?6 a; d- y7 g1 q
3 z' p8 S+ [5 r$ R5 [# s. R1 B( `6 Y$ A1 \* r4 j
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load" R( N0 f( W5 {! e4 W; _
. Y$ { p- V, c2 ^1 P! \/ j' [4 @
5 s) P# @+ B% ^* B$ w: @1 E
6 W! t/ t/ y* ~. T0 e( M End Sub
& t- s8 ]& X0 b) E, ]9 @: }5 l& R8 y
" c- j! L6 V5 M4 A4 W! J6 A9 N+ I+ N2 ~* ?' `
5 k+ h/ r/ ~9 L; E0 U4 A
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
K9 z/ u( Y6 E0 a
$ Q' ]" z2 f$ P5 b9 ? Dim Arc As AutoCAD.AcadArc) _/ g. \9 e3 d4 a& E; K: W( G8 c/ i
Dim Pnt As Object
? C$ F$ s+ W. T# N _/ A Err.Clear()0 s3 c; O! X8 ]0 D4 I9 a5 G
On Error Resume Next
1 ]' \. m% [ o: T" o0 J- I! n) L4 N2 Z& t
'选择圆弧0 ? K6 W* {$ V! V; k% B
ThisDrawing.Utility.GetEntity(Arc, Pnt, "请选择圆弧:")
2 r& H! x/ Y5 T( r( u If Err.Number <> 13 And Err.Number <> 0 Then Exit Sub! |% L2 {$ C0 U* a7 c0 O2 {
' U8 a' T0 c: L
Do Until Arc.ObjectName = "AcDbArc"
8 Z- l$ M/ q. U2 h7 D Err.Clear()% m9 a7 y- }1 Y' K3 t/ K2 J
ThisDrawing.Utility.GetEntity(Arc, Pnt, "你所选的不是圆弧,请重新选择圆弧:")4 X$ V+ E! n9 c5 y
If Err.Number <> 13 And Err.Number <> 0 Then Exit Sub
9 ^) n7 {% g1 q7 P6 U Loop U' |$ E" D7 b
) l2 [3 H/ z5 d C '获取圆弧各属性
: B! H9 n9 B" e9 o Dim Leng As Double
4 Z; s1 A8 c* @' E; L1 D* E' z Dim SPnt As Object
( l2 f- |* q- j6 A/ f' v$ D6 }& N Dim EPnt As Object! p& [) z* H1 A% c( J
Dim CPnt As Object$ j2 V9 N% [- x ?6 X8 g
Leng = Arc.ArcLength, n. y5 [4 C' z& {* z# j
SPnt = Arc.StartPoint. P7 ^' |0 M% W( c
EPnt = Arc.EndPoint5 O! g) B( z+ m. o% Z& U
CPnt = Arc.Center
9 S: k# {/ I4 N1 d* f* Q
& j& `+ D, r4 O0 K '选择标注点
! W3 @- w2 C9 t0 C( m Dim PntforDim As Object
. D- U* v$ P3 \$ B) K PntforDim = ThisDrawing.Utility.GetPoint(, "选择标注点位置:")% A( ?0 G" p. u L
" R! q0 ~: k% h3 w( j' Q6 T3 R, z '对圆弧进行角度标注0 _- g7 S5 W' x2 k; w4 J. X
Dim DimAng As AutoCAD.AcadDim3PointAngular& h, ]% a' M7 X+ B3 [
DimAng = ThisDrawing.ModelSpace.AddDim3PointAngular(CPnt, SPnt, EPnt, PntforDim)* k* I9 Z* c0 u. N
$ i. _4 E( m; R0 x/ Z# G+ f! n6 m '获取角度标注的精度控制(小数点位); e4 T5 s* t* P p
Dim FormatDot As Integer
# Z7 o( Z5 u7 w/ M, I# j3 D2 L& R Dim FormatTxt As String( Q+ E( q) ~" \) P0 N* @# E9 m' e* o
FormatDot = DimAng.TextPrecision. T9 H3 @5 k7 ~: a7 X+ S8 ~
'转换为精度控制格式
: g3 Y6 J- y2 [# F; B FormatTxt = "0."5 b+ d8 |* D; i0 J
Dim I As Integer( p; c* T" F% D
For I = 0 To FormatDot
9 u: }! U6 r. L1 `0 q If I > 0 Then
0 W+ r( u* b) x6 k FormatTxt = FormatTxt & "0"
; G* |0 R, x( f7 ^- U End If
# w! ?7 V6 z: s- b+ C8 _( C Next3 l! k8 P/ P- q( ^( X" s
'更改角度标注的文字内容7 ]5 k, N4 z- I5 v1 Z% ~" k
DimAng.TextOverride = Format(Leng, FormatTxt)
8 R9 z R/ g; ]$ d: e/ N# d
7 M- @' G- O$ s. U% b End Sub
- ]3 D: \9 Z0 p4 g2 r5 {
- t* h! k2 `, d0 y6 s: r
# `2 O7 }0 @; N2 T. z+ Y$ ^/ h! E* R: Z$ @
End Class |